From a3ffaefebdafc8027dcea3aa9c2936474846b313 Mon Sep 17 00:00:00 2001
From: Miroslav Stoyanov <30537612+mkstoyanov@users.noreply.github.com>
Date: Thu, 11 Oct 2018 12:25:20 -0400
Subject: [PATCH] updated tasmanian package with v6.0, improved depend_on and
 conflicts information (#9438)

---
 .../builtin/packages/tasmanian/package.py     | 51 +++++++++++++------
 1 file changed, 36 insertions(+), 15 deletions(-)

diff --git a/var/spack/repos/builtin/packages/tasmanian/package.py b/var/spack/repos/builtin/packages/tasmanian/package.py
index 71ea84d502..cae7108b04 100644
--- a/var/spack/repos/builtin/packages/tasmanian/package.py
+++ b/var/spack/repos/builtin/packages/tasmanian/package.py
@@ -31,12 +31,12 @@ class Tasmanian(CMakePackage):
     interpolation as well as parameter calibration."""
 
     homepage = 'http://tasmanian.ornl.gov'
-    url      = 'https://github.com/ORNL/TASMANIAN/archive/v5.1.tar.gz'
+    url      = 'https://github.com/ORNL/TASMANIAN/archive/v6.0.tar.gz'
     git      = 'https://github.com/ORNL/TASMANIAN.git'
 
-    version('xsdk-0.3.0', branch='master')
     version('develop', branch='master')
 
+    version('6.0', '43dcb1d2bcb2f2c829ad046d0e91e83d')  # use for xsdk-0.4.0
     version('5.1', '5d904029a24470a6acf4a87d3339846e')
 
     version('5.0', '4bf131841d786033863d271739be0f7a',
@@ -64,21 +64,35 @@ class Tasmanian(CMakePackage):
     variant('python', default=False,
             description='add Python binding for Tasmanian')
 
-    depends_on('cmake@3.5.0:', type='build')
+    variant('fortran', default=False,
+            description='add Fortran 90/95 interface to Tasmanian')
+
+    variant('build_type', default='Release',
+            description='CMake build type',
+            values=('Debug', 'Release'))
+
+    depends_on('cmake@3.5.1:', type='build')
 
     depends_on('python@2.7:', when='+python', type=('build', 'run'))
     depends_on('py-numpy', when='+python', type=('build', 'run'))
 
-    extends('python', when='+python')
+    extends('python', when='+python', type=('build', 'run'))
+
+    depends_on('mpi', when="+mpi", type=('build', 'run'))  # openmpi 2 and 3 tested
 
-    depends_on('mpi', when="+mpi")  # openmpi 2 and 3 tested
+    depends_on('blas', when="+blas", type=('build', 'run'))  # openblas 0.2.18 or newer
 
-    depends_on('blas', when="+blas")  # openblas 0.2.18 or newer
+    depends_on('cuda@8.0.61:', when='+cuda', type=('build', 'run'))
+    depends_on('cuda@8.0.61:', when='+magma', type=('build', 'run'))
 
-    depends_on('cuda@9.1', when='+cuda', type=('build', 'run'))
-    depends_on('cuda@9.1', when='+magma', type=('build', 'run'))
+    depends_on('magma@2.4.0:', when='+magma', type=('build', 'run'))
 
-    depends_on('magma@2.3.0', when='+magma', type=('build', 'run'))
+    conflicts('-cuda', when='+magma')  # currently MAGMA only works with CUDA
+
+    # old versions
+    conflicts('+magma', when='@:5.1')  # magma does not work prior to 6.0
+    conflicts('+mpi', when='@:5.1')    # MPI is broken prior to 6.0
+    conflicts('+xsdkflags', when='@:5.1')  # 6.0 is the first version included in xSDK
 
     def cmake_args(self):
         spec = self.spec
@@ -96,10 +110,10 @@ def cmake_args(self):
                     'ON' if '+blas' in spec else 'OFF'),
                 '-DXSDK_ENABLE_CUDA:BOOL={0}'.format(
                     'ON' if '+cuda' in spec else 'OFF'),
-                '-DXSDK_ENABLE_CUDA:BOOL={0}'.format(
-                    'ON' if '+magma' in spec else 'OFF'),
                 '-DTPL_ENABLE_MAGMA:BOOL={0}'.format(
-                    'ON' if '+magma' in spec else 'OFF'), ]
+                    'ON' if '+magma' in spec else 'OFF'),
+                '-DXSDK_ENABLE_FORTRAN:BOOL={0}'.format(
+                    'ON' if '+fortran' in spec else 'OFF'), ]
         else:
             args = [
                 '-DTasmanian_ENABLE_OPENMP:BOOL={0}'.format(
@@ -112,12 +126,19 @@ def cmake_args(self):
                     'ON' if '+mpi' in spec else 'OFF'),
                 '-DTasmanian_ENABLE_CUDA:BOOL={0}'.format(
                     'ON' if '+cuda' in spec else 'OFF'),
-                '-DTasmanian_ENABLE_CUDA:BOOL={0}'.format(
-                    'ON' if '+magma' in spec else 'OFF'),
                 '-DTasmanian_ENABLE_MAGMA:BOOL={0}'.format(
-                    'ON' if '+magma' in spec else 'OFF'), ]
+                    'ON' if '+magma' in spec else 'OFF'),
+                '-DTasmanian_ENABLE_FORTRAN:BOOL={0}'.format(
+                    'ON' if '+fortran' in spec else 'OFF'), ]
 
         if spec.satisfies('+python'):
             args.append('-DPYTHON_EXECUTABLE:FILEPATH={0}'.format(
                 self.spec['python'].command.path))
+
+        # _CUBLAS and _CUDA were separate options prior to 6.0
+        # skipping _CUBLAS leads to peformance regression
+        if spec.satisfies('@:5.1'):
+            args.append('-DTasmanian_ENABLE_CUBLAS={0}'.format(
+                        'ON' if '+cuda' in spec else 'OFF'))
+
         return args
-- 
GitLab