Use https by default
[gentoo.git] / dev-lang / julia / julia-0.3.0.ebuild
1 # Copyright 1999-2014 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3 # $Id$
4
5 EAPI=5
6
7 RESTRICT="test"
8
9 inherit elisp-common eutils multilib pax-utils toolchain-funcs
10
11 PDSFMT=dSFMT-src-2.2
12
13 DESCRIPTION="High-performance programming language for technical computing"
14 HOMEPAGE="http://julialang.org/"
15 SRC_URI="
16         https://github.com/JuliaLang/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz
17         http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/${PDSFMT}.tar.gz
18         https://dev.gentoo.org/~patrick/libuv-${P}.tar.bz2
19         https://dev.gentoo.org/~patrick/rmath-0_p20140821.tar.bz2
20         http://www.public-software-group.org/pub/projects/utf8proc/v1.1.6/utf8proc-v1.1.6.tar.gz
21 "
22
23 LICENSE="MIT"
24 SLOT="0"
25 KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux"
26 IUSE="emacs"
27
28 RDEPEND="
29         dev-lang/R:0=
30         dev-libs/double-conversion:0=
31         dev-libs/gmp:0=
32         dev-libs/libpcre:3=
33         dev-libs/mpfr:0=
34         dev-libs/openspecfun
35         sci-libs/arpack:0=
36         sci-libs/camd:0=
37         sci-libs/cholmod:0=
38         sci-libs/fftw:3.0=
39         sci-libs/openlibm:0=
40         sci-libs/spqr:0=
41         sci-libs/umfpack:0=
42         sci-mathematics/glpk:0=
43         =sys-devel/llvm-3.4*
44         >=sys-libs/libunwind-1.1:7=
45         sys-libs/readline:0=
46         sys-libs/zlib:0=
47         virtual/blas
48         virtual/lapack
49         emacs? ( app-emacs/ess )"
50
51 DEPEND="${RDEPEND}
52         dev-util/patchelf
53         virtual/pkgconfig"
54
55 src_prepare() {
56         ln -s "${DISTDIR}"/${PDSFMT}.tar.gz deps/dsfmt-2.2.tar.gz || die
57         ln -s "${DISTDIR}"/utf8proc-v1.1.6.tar.gz deps/utf8proc-v1.1.6.tar.gz || die
58         cp  -ar "${WORKDIR}"/Rmath deps/ || die
59         rmdir deps/libuv && ln -s "${WORKDIR}"/libuv deps/libuv
60         # no fetching in ebuild
61         # /usr/include/suitesparse is for debian only
62         # respect prefix, flags
63         sed -i \
64                 -e 's|$(JLDOWNLOAD)|${EPREFIX}/bin/true|' \
65                 -e 's|git submodule|${EPREFIX}/bin/true|g' \
66                 -e 's|^\(SUITESPARSE_INC\s*=\).*||g' \
67                 -e "s|-O3|${CFLAGS}|g" \
68                 -e 's|/usr/bin/||g' \
69                 -e "s|/usr/include|${EPREFIX%/}/usr/include|g" \
70                 deps/Makefile || die
71
72         sed -i \
73                 -e "s|\(JULIA_EXECUTABLE = \)\(\$(JULIAHOME)/julia\)|\1 LD_LIBRARY_PATH=\$(BUILD)/$(get_libdir) \2|" \
74                 -e "s|-O3|${CFLAGS}|g" \
75                 -e "s|LIBDIR = lib|LIBDIR = $(get_libdir)|" \
76                 -e "s|/usr/lib|${EPREFIX}/usr/$(get_libdir)|" \
77                 -e "s|/usr/include|${EPREFIX}/usr/include|" \
78                 -e "s|\$(BUILD)/lib|\$(BUILD)/$(get_libdir)|" \
79                 -e "s|^JULIA_COMMIT = .*|JULIA_COMMIT = v${PV}|" \
80                 Make.inc || die
81
82         sed -i \
83                 -e "s|,lib)|,$(get_libdir))|g" \
84                 -e "s|\$(BUILD)/lib|\$(BUILD)/$(get_libdir)|g" \
85                 Makefile || die
86
87         sed -i \
88                 -e "s|ar -rcs|$(tc-getAR) -rcs|g" \
89                 src/Makefile || die
90
91 }
92
93 src_configure() {
94         # libuv is an incompatible fork from upstream, so don't use system one
95         cat <<-EOF > Make.user
96                 USE_LLVM_SHLIB=1
97                 USE_SYSTEM_ARPACK=1
98                 USE_SYSTEM_BLAS=1
99                 USE_SYSTEM_FFTW=1
100                 USE_SYSTEM_GMP=1
101                 USE_SYSTEM_GRISU=1
102                 USE_SYSTEM_LAPACK=1
103                 USE_SYSTEM_LIBM=1
104                 USE_SYSTEM_LIBUNWIND=1
105                 USE_SYSTEM_LIBUV=0
106                 USE_SYSTEM_LLVM=1
107                 USE_SYSTEM_MPFR=1
108                 USE_SYSTEM_OPENLIBM=1
109                 USE_SYSTEM_OPENSPECFUN=1
110                 USE_SYSTEM_PCRE=1
111                 USE_SYSTEM_READLINE=1
112                 USE_SYSTEM_RMATH=1
113                 USE_SYSTEM_SUITESPARSE=1
114                 USE_SYSTEM_ZLIB=1
115                 VERBOSE=1
116         EOF
117 }
118
119 src_compile() {
120         # Not parallel-safe, #514882
121         emake -j1 cleanall
122         if [[ $(get_libdir) != lib ]]; then
123                 mkdir -p usr/$(get_libdir) || die
124                 ln -s $(get_libdir) usr/lib || die
125         fi
126         emake -j1 julia-release prefix="/usr" DESTDIR="${D}"
127         pax-mark m $(file usr/bin/julia-* | awk -F : '/ELF/ {print $1}')
128         emake
129         use emacs && elisp-compile contrib/julia-mode.el
130 }
131
132 src_test() {
133         emake test
134 }
135
136 src_install() {
137         emake install prefix="/usr" DESTDIR="${D}"
138         cat > 99julia <<-EOF
139                 LDPATH=${EROOT%/}/usr/$(get_libdir)/julia
140         EOF
141         doenvd 99julia
142
143         if use emacs; then
144                 elisp-install "${PN}" contrib/julia-mode.el
145                 elisp-site-file-install "${FILESDIR}"/63julia-gentoo.el
146         fi
147         dodoc README.md
148 }
149
150 pkg_postinst() {
151         use emacs && elisp-site-regen
152 }
153
154 pkg_postrm() {
155         use emacs && elisp-site-regen
156 }