summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/boinc-client/package.py
blob: fe23277e91a9fc1920ff2043234e00bf923cad42 (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
# 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 BoincClient(AutotoolsPackage):
    """BOINC is a platform for high-throughput computing on a
    large scale (thousands or millions of computers). It can be
    used for volunteer computing (using consumer devices) or
    grid computing (using organizational resources). It
    supports virtualized, parallel, and GPU-based
    applications."""

    homepage = "https://boinc.berkeley.edu/"
    url      = "https://github.com/BOINC/boinc/archive/client_release/7.16/7.16.5.tar.gz"

    version('7.16.5', sha256='33db60991b253e717c6124cce4750ae7729eaab4e54ec718b9e37f87012d668a')

    variant('manager', default=False, description='Builds the client manager')
    variant('graphics', default=False, description='Graphic apps support')

    # Dependency documentation:
    # https://boinc.berkeley.edu/trac/wiki/SoftwarePrereqsUnix
    conflicts('%gcc@:3.0.4')

    depends_on('autoconf@2.58:', type='build')
    depends_on('automake@1.8:',  type='build')
    depends_on('libtool@1.5:',   type='build')
    depends_on('m4@1.4:',        type='build')

    depends_on('curl@7.17.1:')
    depends_on('openssl@0.9.8:')

    depends_on('freeglut@3:', when='+graphics')
    depends_on('libsm', when='+graphics')
    depends_on('libice', when='+graphics')
    depends_on('libxmu', when='+graphics')
    depends_on('libxi', when='+graphics')
    depends_on('libx11', when='+graphics')
    depends_on('libjpeg', when='+graphics')

    depends_on('wxwidgets@3.0.0:', when='+manager')
    depends_on('libnotify', when='+manager')
    depends_on('sqlite@3.1:', when='+manager')

    patch('systemd-fix.patch')

    def configure_args(self):
        spec = self.spec
        args = []

        args.append("--disable-server")
        args.append("--enable-client")

        if '+manager' in spec:
            args.append('--enable-manager')
        else:
            args.append('--disable-manager')

        return args