summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/pythia8/package.py
blob: 0a8a91277da077ba497884927e92db215bcb36eb (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
85
86
87
88
89
# Copyright 2013-2021 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 Pythia8(AutotoolsPackage):
    """The Pythia program is a standard tool for the generation of events in
    high-energy collisions, comprising a coherent set of physics models for
    the evolution from a few-body hard process to a complex multiparticle
    final state."""

    homepage = "http://home.thep.lu.se/Pythia/"
    url      = "https://pythia.org/download/pythia83/pythia8306.tgz"

    tags = ['hep']

    maintainers = ['ChristianTackeGSI']

    version('8.306', sha256='734803b722b1c1b53c8cf2f0d3c30747c80fc2dde5e0ba141bc9397dad37a8f6')
    version('8.304', sha256='d3897018fb6d545eaf93bf43f32580c984a9bff49259d9dd29dff6edfbe9d9a1')
    version('8.303', sha256='cd7c2b102670dae74aa37053657b4f068396988ef7da58fd3c318c84dc37913e')
    version('8.302', sha256='7372e4cc6f48a074e6b7bc426b040f218ec4a64b0a55e89da6af56933b5f5085')
    version('8.301', sha256='51382768eb9aafb97870dca1909516422297b64ef6a6b94659259b3e4afa7f06')
    version('8.244', sha256='e34880f999daf19cdd893a187123927ba77d1bf851e30f6ea9ec89591f4c92ca', deprecated=True)
    version('8.240', sha256='d27495d8ca7707d846f8c026ab695123c7c78c7860f04e2c002e483080418d8d', deprecated=True)
    version('8.235', sha256='e82f0d6165a8250a92e6aa62fb53201044d8d853add2fdad6d3719b28f7e8e9d', deprecated=True)
    version('8.230', sha256='332fad0ed4f12e6e0cb5755df0ae175329bc16bfaa2ae472d00994ecc99cd78d', deprecated=True)
    version('8.212', sha256='f8fb4341c7e8a8be3347eb26b00329a388ccf925313cfbdba655a08d7fd5a70e', deprecated=True)

    variant('shared', default=True, description='Build shared library')
    variant('hepmc', default=True, description='Build HepMC2 extensions')
    variant('evtgen', default=False, description='Build EvtGen extensions')
    variant('root', default=False, description='Build ROOT extensions')
    variant('fastjet', default=False, description='Build fastjet extensions')

    depends_on('rsync', type='build')
    depends_on('hepmc@:2.99.99', when="+hepmc")
    depends_on('root', when="+root")
    depends_on('evtgen', when="+evtgen")
    depends_on("fastjet@3.0.0:", when="+fastjet")

    conflicts("^evtgen+pythia8", when="+evtgen",
              msg="Building pythia with evtgen bindings and "
              "evtgen with pythia bindings results in a circular dependency "
              "that cannot be resolved at the moment! "
              "Use pythia8+evtgen^evtgen~pythia8")

    def configure_args(self):
        args = []

        if '+shared' in self.spec:
            args.append('--enable-shared')
        if '+hepmc' in self.spec:
            args.append('--with-hepmc=%s' % self.spec["hepmc"].prefix)
        else:
            args.append('--without-hepmc')
        if '+fastjet' in self.spec:
            args.append('--with-fastjet3=%s' % self.spec["fastjet"].prefix)
        else:
            args.append('--without-fastjet3')
        if '+evtgen' in self.spec:
            args.append('--with-evtgen=%s' % self.spec["evtgen"].prefix)
        else:
            args.append('--without-evtgen')
        if '+root' in self.spec:
            args.append('--with-root=%s' % self.spec["root"].prefix)
        else:
            args.append('--without-root')

        return args

    def url_for_version(self, version):
        url, dirname, fname = self.url.rsplit('/', 2)
        dirname = 'pythia' + str(version)[:2]

        return url + '/' + dirname + '/' + fname

    def setup_common_env(self, env):
        env.set('PYTHIA8', self.prefix)
        env.set('PYTHIA8DATA', self.prefix.share.Pythia8.xmldoc)

    def setup_dependent_run_environment(self, env, dependent_spec):
        self.setup_common_env(env)

    def setup_dependent_build_environment(self, env, dependent_spec):
        self.setup_common_env(env)