commit:     014553d7ae962484f4a71db928cc5b0a2df007ce
Author:     gienah <gienah <AT> gentoo <DOT> org>
AuthorDate: Sat Sep 13 04:10:58 2014 +0000
Commit:     Justin Lecher <jlec <AT> gentoo <DOT> org>
CommitDate: Sat Sep 27 11:40:42 2014 +0000
URL:        http://sources.gentoo.org/gitweb/?p=proj/sci.git;a=commit;h=014553d7

Add int64 use flag to julia-9999.ebuild. Depend on 
>=virtual/blas-2.1-r2[int64?] and >=virtual/lapack-3.5-r2[int64?]. Fixes 
dev-lang/julia wont compile against openblas #102.

---
 dev-lang/julia/ChangeLog         |  5 ++++
 dev-lang/julia/julia-9999.ebuild | 59 ++++++++++++++++++++++++++++++----------
 dev-lang/julia/metadata.xml      |  8 ++++--
 3 files changed, 55 insertions(+), 17 deletions(-)

diff --git a/dev-lang/julia/ChangeLog b/dev-lang/julia/ChangeLog
index c53e175..347e2fb 100644
--- a/dev-lang/julia/ChangeLog
+++ b/dev-lang/julia/ChangeLog
@@ -2,6 +2,11 @@
 # Copyright 1999-2014 Gentoo Foundation; Distributed under the GPL v2
 # $Header: $
 
+  13 Sep 2014; Mark Wright <gie...@gentoo.org> julia-9999.ebuild:
+  Add int64 use flag to julia-9999.ebuild. Depend on
+  >=virtual/blas-2.1-r2[int64?] and >=virtual/lapack-3.5-r2[int64?]. Fixes
+  dev-lang/julia wont compile against openblas -int64 #102.
+
   27 Aug 2014; François Bissey <francois.bis...@canterbury.ac.nz>
   julia-9999.ebuild:
   Bump dependency on llvm as in 0.3

diff --git a/dev-lang/julia/julia-9999.ebuild b/dev-lang/julia/julia-9999.ebuild
index 69bff79..b54ecfa 100644
--- a/dev-lang/julia/julia-9999.ebuild
+++ b/dev-lang/julia/julia-9999.ebuild
@@ -14,7 +14,7 @@ EGIT_REPO_URI="git://github.com/JuliaLang/julia.git"
 LICENSE="MIT"
 SLOT="0"
 KEYWORDS=""
-IUSE="doc emacs"
+IUSE="doc emacs int64"
 
 RDEPEND="
        dev-lang/R:0=
@@ -26,6 +26,7 @@ RDEPEND="
        sci-libs/arpack:0=
        sci-libs/camd:0=
        sci-libs/cholmod:0=
+       sci-libs/fdlibm:0=
        sci-libs/fftw:3.0=[threads]
        sci-libs/openlibm:0=
        sci-libs/spqr:0=
@@ -35,10 +36,9 @@ RDEPEND="
        >=sys-libs/libunwind-1.1:7=
        sys-libs/readline:0=
        sys-libs/zlib:0=
-       virtual/blas
-       virtual/lapack
+       >=virtual/blas-2.1-r2[int64?]
+       >=virtual/lapack-3.5-r2[int64?]
        emacs? ( app-emacs/ess )"
-
 DEPEND="${RDEPEND}
        dev-util/patchelf
        virtual/pkgconfig
@@ -55,35 +55,64 @@ src_prepare() {
                -e "s|/usr/include|${EPREFIX%/}/usr/include|g" \
                deps/Makefile || die
 
+       local blasprofname=$(usex int64 "blas-int64" "blas")
+       local lapackprofname=$(usex int64 "lapack-int64" "lapack")
+       local blasname=$($(tc-getPKG_CONFIG) --libs-only-l "${blasprofname}" | \
+               sed -e "s/-l\([^ \t]*\).*/lib\1/")
+       local lapackname=$($(tc-getPKG_CONFIG) --libs-only-l 
"${lapackprofname}" | \
+               sed -e "s/-l\([^ \t]*\).*/lib\1/")
        sed -i \
-               -e "s|\(JULIA_EXECUTABLE = \)\(\$(JULIAHOME)/julia\)|\1 
LD_LIBRARY_PATH=\$(BUILD)/$(get_libdir) \2|" \
                -e "s|-O3|${CFLAGS}|g" \
                -e "s|libdir = \$(prefix)/lib|libdir = 
\$(prefix)/$(get_libdir)|" \
+               -e "s|build_libdir = \$(build_prefix)/lib|build_libdir = 
\$(build_prefix)/$(get_libdir)|" \
+               -e "s|build_private_libdir = 
\$(build_prefix)/lib/julia|build_private_libdir = 
\$(build_prefix)/$(get_libdir)/julia|" \
                -e "s|/usr/lib|${EPREFIX}/usr/$(get_libdir)|" \
                -e "s|/usr/include|${EPREFIX}/usr/include|" \
-               -e "s|\$(BUILD)/lib|\$(BUILD)/$(get_libdir)|" \
                -e "s|^JULIA_COMMIT = .*|JULIA_COMMIT = v${PV}|" \
+               -e "s|-lblas|$($(tc-getPKG_CONFIG) --libs-only-l 
${blasprofname})|" \
+               -e "s|-llapack|$($(tc-getPKG_CONFIG) --libs-only-l 
${lapackprofname})|" \
+               -e "s|liblapack|${lapackname}|g" \
+               -e "s|libblas|${blasname}|g" \
+               -e "s|-O3|${CFLAGS}|g" \
+               -e "s|JCFLAGS = |JCFLAGS = $($(tc-getPKG_CONFIG) --cflags 
"${lapackprofname}") ${CFLAGS} |g" \
+               -e "s|JCXXCFLAGS = |JCXXFLAGS = $($(tc-getPKG_CONFIG) --cflags 
"${lapackprofname}") ${CXXFLAGS} |g" \
+               -e "s|JFFLAGS = |JFFLAGS = ${FFLAGS} |g" \
                -e '/MARCH = /d' \
                Make.inc || die
 
        sed -i \
                -e "s|,lib)|,$(get_libdir))|g" \
                -e "s|\$(BUILD)/lib|\$(BUILD)/$(get_libdir)|g" \
+               -e "s|\$(JL_LIBDIR),lib|\$(JL_LIBDIR),$(get_libdir)|" \
+               -e 
"s|\$(JL_PRIVATE_LIBDIR),lib|\$(JL_PRIVATE_LIBDIR),$(get_libdir)|" \
                Makefile || die
 
        sed -i \
                -e "s|ar -rcs|$(tc-getAR) -rcs|g" \
+               -e "s|LLVMLINK = -lLLVM-\$(LLVM_VER)|LLVMLINK = $(llvm-config 
--libs) $(llvm-config --ldflags)|" \
                src/Makefile || die
+
+       sed -e "s|libopenblas|${blasname}|g" \
+               -i base/util.jl \
+               -i test/perf/micro/Makefile || die
+
+       # Occasional test suite failure due to ARPACK #6162 
https://github.com/JuliaLang/julia/issues/6162
+       sed -e 's|"arpack", ||' \
+               -i test/runtests.jl || die
 }
 
 src_configure() {
        # libuv is an incompatible fork from upstream, so don't use system one
+       local blasprofname=$(usex int64 "blas-int64" "blas")
+       local lapackprofname=$(usex int64 "lapack-int64" "lapack")
        cat <<-EOF > Make.user
-               LIBBLAS=$($(tc-getPKG_CONFIG) --libs blas)
-               LIBBLASNAME=$($(tc-getPKG_CONFIG) --libs blas | sed -e 
"s/-l\([a-z0-9]*\).*/lib\1/")
-               LIBLAPACK=$($(tc-getPKG_CONFIG) --libs lapack)
-               LIBLAPACKNAME=$($(tc-getPKG_CONFIG) --libs lapack | sed -e 
"s/-l\([a-z0-9]*\).*/lib\1/")
-               USE_BLAS64=0
+               LIBBLAS=$($(tc-getPKG_CONFIG) --libs ${blasprofname})
+               LIBBLASNAME=$($(tc-getPKG_CONFIG) --libs-only-l ${blasprofname} 
| sed -e "s/-l\([a-z0-9_]*\).*/lib\1/")
+               LIBLAPACK=$($(tc-getPKG_CONFIG) --libs-only-l ${lapackprofname})
+               LIBLAPACKNAME=$($(tc-getPKG_CONFIG) --libs-only-l 
${lapackprofname} | sed -e "s/-l\([a-z0-9_]*\).*/lib\1/")
+               LIBM=-lfdlibm
+               LIBMNAME=libfdlibm
+               USE_BLAS64=$(usex int64 "1" "0")
                USE_LLVM_SHLIB=1
                USE_SYSTEM_ARPACK=1
                USE_SYSTEM_BLAS=1
@@ -91,7 +120,7 @@ src_configure() {
                USE_SYSTEM_GMP=1
                USE_SYSTEM_GRISU=1
                USE_SYSTEM_LAPACK=1
-               USE_SYSTEM_LIBM=1
+               USE_SYSTEM_LIBM=0
                USE_SYSTEM_LIBUNWIND=1
                USE_SYSTEM_LIBUV=0
                USE_SYSTEM_LLVM=1
@@ -114,9 +143,9 @@ src_configure() {
 }
 
 src_compile() {
-       emake -j1 julia-release
-       pax-mark m $(file usr/bin/julia-* | awk -F : '/ELF/ {print $1}')
-       emake -j1
+       emake julia-release
+       pax-mark m $(file usr/bin/julia* | awk -F : '/ELF/ {print $1}')
+       emake
        use doc && emake -C doc html
        use emacs && elisp-compile contrib/julia-mode.el
 }

diff --git a/dev-lang/julia/metadata.xml b/dev-lang/julia/metadata.xml
index 523edd5..0957660 100644
--- a/dev-lang/julia/metadata.xml
+++ b/dev-lang/julia/metadata.xml
@@ -1,8 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd";>
 <pkgmetadata>
-<herd>sci</herd>
-<longdescription>
+  <herd>sci</herd>
+  <longdescription>
   Julia is a high-level, high-performance dynamic programming language for
   technical computing, with syntax that is familiar to users of other
   technical computing environments. It provides a sophisticated compiler,
@@ -14,4 +14,8 @@
   around defining functions, and overloading them for different combinations
   of argument types (which can also be user-defined).
 </longdescription>
+<use>
+  <flag name="int64">Build with 64 bits integer blas and lapack (needs
+  <pkg>sci-libs/openblas</pkg> and <pkg>sci-libs/lapack-reference</pkg>)</flag>
+</use>
 </pkgmetadata>

Reply via email to