summaryrefslogtreecommitdiff
path: root/var/spack/repos/builtin/packages/julia/package.py
blob: 6900af38e4f13941f4fc0d10c51b0766f7632526 (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
from spack import *
import os

class Julia(Package):
    """The Julia Language: A fresh approach to technical computing"""
    homepage = "http://julialang.org"
    url      = "http://github.com/JuliaLang/julia/releases/download/v0.4.2/julia-0.4.2.tar.gz"

    version('0.4.3', '7b9f096798fca4bef262a64674bc2b52')
    version('0.4.2', 'ccfeb4f4090c8b31083f5e1ccb03eb06')

    patch('gc.patch')

    # Build-time dependencies
    depends_on("cmake @2.8:")
    # depends_on("awk")
    # depends_on("m4")
    # depends_on("pkg-config")
    depends_on("python @2.6:2.9")

    # I think that Julia requires the dependencies above, but it builds find (on
    # my system) without these. We should enable them as necessary.

    # Run-time dependencies
    # depends_on("arpack")
    # depends_on("fftw +float")
    # depends_on("gmp")
    # depends_on("mpfr")
    # depends_on("pcre2")

    # ARPACK: Requires BLAS and LAPACK; needs to use the same version as Julia.

    # BLAS and LAPACK: Julia prefers 64-bit versions on 64-bit systems. OpenBLAS
    # has an option for this; make it available as variant.

    # FFTW: Something doesn't work when using a pre-installed FFTW library; need
    # to investigate.

    # GMP, MPFR: Something doesn't work when using a pre-installed FFTW library;
    # need to investigate.

    # LLVM: Julia works only with specific versions, and might require patches.
    # Thus we let Julia install its own LLVM.

    # Other possible dependencies:
    # USE_SYSTEM_OPENLIBM=0
    # USE_SYSTEM_OPENSPECFUN=0
    # USE_SYSTEM_DSFMT=0
    # USE_SYSTEM_SUITESPARSE=0
    # USE_SYSTEM_UTF8PROC=0
    # USE_SYSTEM_LIBGIT2=0

    def install(self, spec, prefix):
        # Explicitly setting CC, CXX, or FC breaks building libuv, one of
        # Julia's dependencies. This might be a Darwin-specific problem. Given
        # how Spack sets up compilers, Julia should still use Spack's compilers,
        # even if we don't specify them explicitly.
        options = [#"CC=cc",
                   #"CXX=c++",
                   #"FC=fc",
                   #"USE_SYSTEM_ARPACK=1",
                   #"USE_SYSTEM_FFTW=1",
                   #"USE_SYSTEM_GMP=1",
                   #"USE_SYSTEM_MPFR=1",
                   #TODO "USE_SYSTEM_PCRE=1",
                   "prefix=%s" % prefix]
        with open('Make.user', 'w') as f:
            f.write('\n'.join(options) + '\n')
        make()
        make("install")