diff options
-rw-r--r-- | lib/spack/spack/test/versions.py | 36 | ||||
-rw-r--r-- | lib/spack/spack/version.py | 19 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/oce/package.py | 33 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/python/package.py | 5 | ||||
-rw-r--r-- | var/spack/repos/builtin/packages/suite-sparse/package.py | 41 |
5 files changed, 95 insertions, 39 deletions
diff --git a/lib/spack/spack/test/versions.py b/lib/spack/spack/test/versions.py index 4624f901c8..a3a328fb14 100644 --- a/lib/spack/spack/test/versions.py +++ b/lib/spack/spack/test/versions.py @@ -389,3 +389,39 @@ class VersionsTest(unittest.TestCase): self.assertEqual(v.dotted, '1.2.3') self.assertEqual(v.dashed, '1-2-3') self.assertEqual(v.underscored, '1_2_3') + + 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) diff --git a/lib/spack/spack/version.py b/lib/spack/spack/version.py index 858d581472..6839643941 100644 --- a/lib/spack/spack/version.py +++ b/lib/spack/spack/version.py @@ -44,6 +44,7 @@ be called on any of the types:: concrete """ import re +import numbers from bisect import bisect_left from functools import wraps @@ -194,10 +195,24 @@ class Version(object): return iter(self.version) def __getitem__(self, idx): - return tuple(self.version[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]: + 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)) def __repr__(self): - return self.string + return 'Version(' + repr(self.string) + ')' def __str__(self): return self.string diff --git a/var/spack/repos/builtin/packages/oce/package.py b/var/spack/repos/builtin/packages/oce/package.py index 0f0fcfb733..06b6b7cbb0 100644 --- a/var/spack/repos/builtin/packages/oce/package.py +++ b/var/spack/repos/builtin/packages/oce/package.py @@ -23,20 +23,22 @@ # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ############################################################################## from spack import * -import platform, sys +import platform + class Oce(Package): - """ - Open CASCADE Community Edition: - patches/improvements/experiments contributed by users over the official Open CASCADE library. + """Open CASCADE Community Edition: + patches/improvements/experiments contributed by users over the official + Open CASCADE library. """ homepage = "https://github.com/tpaviot/oce" url = "https://github.com/tpaviot/oce/archive/OCE-0.17.tar.gz" + version('0.17.2', 'bf2226be4cd192606af677cf178088e5') version('0.17.1', '36c67b87093c675698b483454258af91') - version('0.17' , 'f1a89395c4b0d199bea3db62b85f818d') + version('0.17', 'f1a89395c4b0d199bea3db62b85f818d') version('0.16.1', '4d591b240c9293e879f50d86a0cb2bb3') - version('0.16' , '7a4b4df5a104d75a537e25e7dd387eca') + version('0.16', '7a4b4df5a104d75a537e25e7dd387eca') variant('tbb', default=True, description='Build with Intel Threading Building Blocks') @@ -49,8 +51,7 @@ class Oce(Package): # http://tracker.dev.opencascade.org/view.php?id=26042 # https://github.com/tpaviot/oce/issues/605 # https://github.com/tpaviot/oce/commit/61cb965b9ffeca419005bc15e635e67589c421dd.patch - patch('null.patch',when='@0.16:0.17.1') - + patch('null.patch', when='@0.16:0.17.1') def install(self, spec, prefix): options = [] @@ -63,7 +64,8 @@ class Oce(Package): '-DOCE_DISABLE_X11:BOOL=ON', '-DOCE_DRAW:BOOL=OFF', '-DOCE_MODEL:BOOL=ON', - '-DOCE_MULTITHREAD_LIBRARY:STRING=%s' % ('TBB' if '+tbb' in spec else 'NONE'), + '-DOCE_MULTITHREAD_LIBRARY:STRING=%s' % ( + 'TBB' if '+tbb' in spec else 'NONE'), '-DOCE_OCAF:BOOL=ON', '-DOCE_USE_TCL_TEST_FRAMEWORK:BOOL=OFF', '-DOCE_VISUALISATION:BOOL=OFF', @@ -77,15 +79,8 @@ class Oce(Package): '-DOCE_OSX_USE_COCOA:BOOL=ON', ]) - cmake('.', *options) + options.append('-DCMAKE_INSTALL_NAME_DIR:PATH=%s/lib' % prefix) + cmake('.', *options) make("install/strip") - - # OCE tests build is brocken at least on Darwin. - # Unit tests are linked against libTKernel.10.dylib isntead of /full/path/libTKernel.10.dylib - # see https://github.com/tpaviot/oce/issues/612 - # make("test") - - # The shared libraries are not installed correctly on Darwin; correct this - if (sys.platform == 'darwin'): - fix_darwin_install_name(prefix.lib) + make("test") diff --git a/var/spack/repos/builtin/packages/python/package.py b/var/spack/repos/builtin/packages/python/package.py index 8033c52b91..d019133585 100644 --- a/var/spack/repos/builtin/packages/python/package.py +++ b/var/spack/repos/builtin/packages/python/package.py @@ -47,6 +47,8 @@ class Python(Package): extendable = True + variant('ucs4', default=False, description='Enable UCS4 unicode strings') + depends_on("openssl") depends_on("bzip2") depends_on("readline") @@ -82,6 +84,9 @@ class Python(Package): "LDFLAGS=-L{0}".format(ldflags) ] + if '+ucs4' in spec: + config_args.append('--enable-unicode=ucs4') + if spec.satisfies('@3:'): config_args.append('--without-ensurepip') diff --git a/var/spack/repos/builtin/packages/suite-sparse/package.py b/var/spack/repos/builtin/packages/suite-sparse/package.py index dd0dfa3e23..2cc89b843f 100644 --- a/var/spack/repos/builtin/packages/suite-sparse/package.py +++ b/var/spack/repos/builtin/packages/suite-sparse/package.py @@ -33,6 +33,7 @@ class SuiteSparse(Package): url = 'http://faculty.cse.tamu.edu/davis/SuiteSparse/SuiteSparse-4.5.1.tar.gz' version('4.5.1', 'f0ea9aad8d2d1ffec66a5b6bfeff5319') + version('4.5.3', '8ec57324585df3c6483ad7f556afccbd') # FIXME: (see below) # variant('tbb', default=True, description='Build with Intel TBB') @@ -40,34 +41,35 @@ class SuiteSparse(Package): depends_on('blas') depends_on('lapack') - depends_on('metis@5.1.0', when='@4.5.1') + depends_on('metis@5.1.0', when='@4.5.1:') # FIXME: - # in @4.5.1. TBB support in SPQR seems to be broken as TBB-related linkng flags - # does not seem to be used, which leads to linking errors on Linux. + # in @4.5.1. TBB support in SPQR seems to be broken as TBB-related linkng + # flags does not seem to be used, which leads to linking errors on Linux. # Try re-enabling in future versions. # depends_on('tbb', when='+tbb') def install(self, spec, prefix): - # The build system of SuiteSparse is quite old-fashioned - # It's basically a plain Makefile which include an header (SuiteSparse_config/SuiteSparse_config.mk) - # with a lot of convoluted logic in it. - # Any kind of customization will need to go through filtering of that file + # The build system of SuiteSparse is quite old-fashioned. + # It's basically a plain Makefile which include an header + # (SuiteSparse_config/SuiteSparse_config.mk)with a lot of convoluted + # logic in it. Any kind of customization will need to go through + # filtering of that file make_args = ['INSTALL=%s' % prefix] # inject Spack compiler wrappers make_args.extend([ - 'AUTOCC=no', - 'CC=cc', - 'CXX=c++', - 'F77=f77', + 'AUTOCC=no', + 'CC=cc', + 'CXX=c++', + 'F77=f77', ]) # 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, + 'MY_METIS_LIB=-L%s -lmetis' % spec['metis'].prefix.lib, + 'MY_METIS_INC=%s' % spec['metis'].prefix.include, ]) # Intel TBB in SuiteSparseQR @@ -78,10 +80,13 @@ class SuiteSparse(Package): ]) # BLAS arguments require path to libraries - # FIXME : (blas / lapack always provide libblas and liblapack as aliases) - make_args.extend([ - 'BLAS=-lblas', - 'LAPACK=-llapack' - ]) + # FIXME: (blas/lapack always provide libblas and liblapack as aliases) + 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 + make_args.extend([ + 'BLAS=-lblas -lstdc++', + 'LAPACK=-llapack' + ]) make('install', *make_args) |