# Copyright 1999-2014 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 # $Id$ EAPI=5 RESTRICT="test" inherit elisp-common eutils multilib pax-utils toolchain-funcs PDSFMT=dSFMT-src-2.2 DESCRIPTION="High-performance programming language for technical computing" HOMEPAGE="http://julialang.org/" SRC_URI=" https://github.com/JuliaLang/${PN}/archive/v${PV}.tar.gz -> ${P}.tar.gz http://www.math.sci.hiroshima-u.ac.jp/~m-mat/MT/SFMT/${PDSFMT}.tar.gz https://dev.gentoo.org/~patrick/libuv-${P}.tar.bz2 https://dev.gentoo.org/~patrick/rmath-0_p20140821.tar.bz2 http://www.public-software-group.org/pub/projects/utf8proc/v1.1.6/utf8proc-v1.1.6.tar.gz " LICENSE="MIT" SLOT="0" KEYWORDS="~amd64 ~x86 ~amd64-linux ~x86-linux" IUSE="emacs" RDEPEND=" dev-lang/R:0= dev-libs/double-conversion:0= dev-libs/gmp:0= dev-libs/libpcre:3= dev-libs/mpfr:0= dev-libs/openspecfun sci-libs/arpack:0= sci-libs/camd:0= sci-libs/cholmod:0= sci-libs/fftw:3.0= sci-libs/openlibm:0= sci-libs/spqr:0= sci-libs/umfpack:0= sci-mathematics/glpk:0= =sys-devel/llvm-3.4* >=sys-libs/libunwind-1.1:7= sys-libs/readline:0= sys-libs/zlib:0= virtual/blas virtual/lapack emacs? ( app-emacs/ess )" DEPEND="${RDEPEND} dev-util/patchelf virtual/pkgconfig" src_prepare() { ln -s "${DISTDIR}"/${PDSFMT}.tar.gz deps/dsfmt-2.2.tar.gz || die ln -s "${DISTDIR}"/utf8proc-v1.1.6.tar.gz deps/utf8proc-v1.1.6.tar.gz || die cp -ar "${WORKDIR}"/Rmath deps/ || die rmdir deps/libuv && ln -s "${WORKDIR}"/libuv deps/libuv # no fetching in ebuild # /usr/include/suitesparse is for debian only # respect prefix, flags sed -i \ -e 's|$(JLDOWNLOAD)|${EPREFIX}/bin/true|' \ -e 's|git submodule|${EPREFIX}/bin/true|g' \ -e 's|^\(SUITESPARSE_INC\s*=\).*||g' \ -e "s|-O3|${CFLAGS}|g" \ -e 's|/usr/bin/||g' \ -e "s|/usr/include|${EPREFIX%/}/usr/include|g" \ deps/Makefile || die sed -i \ -e "s|\(JULIA_EXECUTABLE = \)\(\$(JULIAHOME)/julia\)|\1 LD_LIBRARY_PATH=\$(BUILD)/$(get_libdir) \2|" \ -e "s|-O3|${CFLAGS}|g" \ -e "s|LIBDIR = lib|LIBDIR = $(get_libdir)|" \ -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}|" \ Make.inc || die sed -i \ -e "s|,lib)|,$(get_libdir))|g" \ -e "s|\$(BUILD)/lib|\$(BUILD)/$(get_libdir)|g" \ Makefile || die sed -i \ -e "s|ar -rcs|$(tc-getAR) -rcs|g" \ src/Makefile || die } src_configure() { # libuv is an incompatible fork from upstream, so don't use system one cat <<-EOF > Make.user USE_LLVM_SHLIB=1 USE_SYSTEM_ARPACK=1 USE_SYSTEM_BLAS=1 USE_SYSTEM_FFTW=1 USE_SYSTEM_GMP=1 USE_SYSTEM_GRISU=1 USE_SYSTEM_LAPACK=1 USE_SYSTEM_LIBM=1 USE_SYSTEM_LIBUNWIND=1 USE_SYSTEM_LIBUV=0 USE_SYSTEM_LLVM=1 USE_SYSTEM_MPFR=1 USE_SYSTEM_OPENLIBM=1 USE_SYSTEM_OPENSPECFUN=1 USE_SYSTEM_PCRE=1 USE_SYSTEM_READLINE=1 USE_SYSTEM_RMATH=1 USE_SYSTEM_SUITESPARSE=1 USE_SYSTEM_ZLIB=1 VERBOSE=1 EOF } src_compile() { # Not parallel-safe, #514882 emake -j1 cleanall if [[ $(get_libdir) != lib ]]; then mkdir -p usr/$(get_libdir) || die ln -s $(get_libdir) usr/lib || die fi emake -j1 julia-release prefix="/usr" DESTDIR="${D}" pax-mark m $(file usr/bin/julia-* | awk -F : '/ELF/ {print $1}') emake use emacs && elisp-compile contrib/julia-mode.el } src_test() { emake test } src_install() { emake install prefix="/usr" DESTDIR="${D}" cat > 99julia <<-EOF LDPATH=${EROOT%/}/usr/$(get_libdir)/julia EOF doenvd 99julia if use emacs; then elisp-install "${PN}" contrib/julia-mode.el elisp-site-file-install "${FILESDIR}"/63julia-gentoo.el fi dodoc README.md } pkg_postinst() { use emacs && elisp-site-regen } pkg_postrm() { use emacs && elisp-site-regen }