summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/kassiopeia/package.py
blob: 1010b769e6ceb7a522528018db3a7f9c55bba192 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
# Copyright 2013-2022 Lawrence Livermore National Security, LLC and other
# Spack Project Developers. See the top-level COPYRIGHT file for details.
#
# SPDX-License-Identifier: (Apache-2.0 OR MIT)

from spack import *


class Kassiopeia(CMakePackage):
    """Simulation of electric and magnetic fields and particle tracking."""

    homepage = "https://katrin-experiment.github.io/Kassiopeia/"
    url      = "https://github.com/KATRIN-Experiment/Kassiopeia/archive/v3.6.1.tar.gz"
    git      = "https://github.com/KATRIN-Experiment/Kassiopeia.git"

    tags = ['hep']

    maintainers = ['wdconinc']

    version("main", branch="main")
    version('3.8.0', sha256='ae44c2d485fadaa6f562388064a211ae51b7d06bab7add2723ab0c8b21eb7e8f')
    version('3.7.7', sha256='b5f62b2e796fac57698794b46b63acbc47ce02010bd1f716996918a550b22a21')
    version('3.7.6', sha256='fa20cf0f29ee2312bf96b07661d7b5c9303782d907671acd01032cc1f13edd55')
    version('3.7.5', sha256='8f28d08c7ef51e64221e0a4705f3cee3a5d738b8cdde5ce9fa58a3a0dd14ae05')
    version('3.7.4', sha256='c1514163a084530930be10dbe487fb1950ccbc9662a4a190bdecffbd84a71fd4')
    version('3.7.3', sha256='a8753585b9fa0903e1f5f821c4ced3cddd72792ad7e6075a7e25318f81ad9eaa')
    version('3.7.2', sha256='bdfdf8c26fa5ad19e8b9c6eb600dfbd3c8218cd695ce067f10633b63bd192f92')
    version('3.7.1', sha256='b22ae2fe5c2271bdf6aaf65d9ecf57ff0d6a88d28ad26d176e1129f0e58faea4')
    version('3.7.0', sha256='32a3e98c77d1b97fe9862cf1d8c6ba8e6c82fb9295a6a217c7ce77cbec751046')
    version('3.6.1', sha256='30193d5384ad81b8570fdcd1bb35b15cc365ab84712819ac0d989c6f5cf6f790')
    version('3.5.0', sha256='b704d77bd182b2806dc8323f642d3197ce21dba3d456430f594b19a7596bda22')
    version('3.4.0', sha256='4e2bca61011e670186d49048aea080a06c3c95dacf4b79e7549c36960b4557f4')

    variant("root", default=False,
            description="Include support for writing ROOT files")
    variant("vtk", default=False,
            description="Include visualization support through VTK")
    variant("mpi", default=False,
            description="Include MPI support for field calculations")
    variant("tbb", default=False,
            description="Include Intel TBB support for field calculations")
    variant("opencl", default=False,
            description="Include OpenCL support for field calculations")
    variant("log4cxx", default=False,
            description="Use log4cxx for logging")
    variant("boost", default=False,
            description="Build Boost dependent modules")

    depends_on('cmake@3.13:', type='build')
    depends_on('zlib')
    depends_on('root@6.0.0:', when='+root')
    depends_on('vtk@6.1:', when='+vtk')
    depends_on('mpi', when='+mpi')
    depends_on('tbb', when='+tbb')
    depends_on('opencl', when='+opencl')
    depends_on('log4cxx', when='+log4cxx')
    depends_on('boost', when='+boost')

    @when('@:3.8.0')
    def patch(self):
        filter_file(
            'LANGUAGES CXX',
            'LANGUAGES CXX C',
            'CMakeLists.txt')
        filter_file(
            '#include "vtkXMLPolyDataWriter.h"',
            '#include "vtkXMLPolyDataWriter.h"\n#include "vtkUnsignedCharArray.h"',
            'KGeoBag/Source/Visualization/Vtk/Source/KGVTKGeometryPainter.cc')

    def cmake_args(self):
        if '+root' in self.spec:
            cxxstd = self.spec['root'].variants['cxxstd'].value
        else:
            cxxstd = '14'
        args = [
            self.define_from_variant("KASPER_USE_BOOST", "boost"),
            self.define_from_variant("KASPER_USE_VTK", "vtk"),
            self.define_from_variant("KASPER_USE_TBB", "tbb"),
            self.define_from_variant("KEMField_USE_MPI", "mpi"),
            self.define_from_variant("KEMField_USE_OPENCL", "opencl"),
            self.define_from_variant("Kommon_USE_Log4CXX", "log4cxx"),
            self.define("CMAKE_CXX_STANDARD", cxxstd)
        ]
        return args