summarylogtreecommitdiffstats
path: root/PKGBUILD
blob: 1f2c707b002af704d854cdb2c9c202999b00e94e (plain)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# Maintainer: halfhorn <mwellsa -at- gmail -dot- com>
# Contributor: jdarch <jda -dot- cloud -plus- archlinux -at- gmail -dot- com>
# Based on the PKGBUILD for R

pkgname=r-mkl
pkgver=3.2.1
pkgrel=1
pkgdesc="Language and environment for statistical computing and graphics, set up to use Intel's MKL"
arch=('i686' 'x86_64')
license=('GPL')
url=('http://www.r-project.org/')
#provides=('r=3.1.2')
provides=("r=${pkgver}","r-mkl=${pkgver}")
conflicts=('r')
depends=('intel-mkl' 'bzip2'  'libpng' 'libjpeg' 'libtiff'
         'ncurses' 'pcre' 'readline' 'zlib' 'perl' 'gcc-libs'
         'libxt' 'libxmu' 'pango' 'xz' 'desktop-file-utils' 'zip' 'unzip')
makedepends=('jdk8-openjdk' 'gcc-fortran' 'tk')
optdepends=('tk: tcl/tk interface' 'texlive-bin: latex sty files'
            'icc: intel compiler' 'icpc: intel compiler' 'xiar: intel compiler'
            'xild: intel compiler')
backup=('etc/R/Makeconf' 'etc/R/Renviron' 'etc/R/ldpaths' 'etc/R/repositories' 'etc/R/javaconf')
options=('!makeflags' '!emptydirs')
install=r-mkl.install

source=("http://cran.r-project.org/src/base/R-${pkgver%%.*}/R-${pkgver}.tar.gz"
	'r.desktop'
	'r.png'
	'R.conf')

md5sums=('c2aac8b40f84e08e7f8c9068de9239a3'
         '44ca875140b148543148b7749c7d6f5e'
         '00659f39e90627fe87f1645df5d4e3a7'
         '1dfa62c812aed9642f6e4ac34999b9fe')
sha512sums=('8ae44a8edc5e41e271c5a7b9da7058dba354172e237d56345810e140524b96442d1dea8988956adb89106cbd42ca7ea1eb2159651e28a81b3a45fc98b8e62f86'
            '1a90aed5411d72dd3e7708db0cb92c518e656e1a510ece02ad934131e05b8e683b4a36da8d37198263dc19fb2f3f19656c19c01f9b67974f0d7755974076d0b7'
            '55ed6e819dcbb231d842d825134b84d1a24db177558d5dad9369d57fd21d0239d6433c4311531171a101ca3c7c0685493e9cc6c1fe9e4e0df59f2331cff150ba'
            'aae388c5b6c02d9fb857914032b0cd7d68a9f21e30c39ba11f5a29aaf1d742545482054b57ce18872eabb6605bbb359b2fc1e9be5ce6881443fdbdf6b67fab3b')

if [ "$CARCH" == "x86_64" ]; then
    _intel_arch=intel64
    _intel_lib=mkl_gf_lp64
elif [ "$CARCH" == "i686" ]; then
    _intel_arch=ia32
    _intel_lib=mkl_gf
fi

#_CC="icc" # uncomment to build with the Intel compiler

prepare() {
    cd R-${pkgver}
    # set texmf dir correctly in makefile
    sed -i 's|$(rsharedir)/texmf|${datarootdir}/texmf|' share/Makefile.in
    # fix for texinfo 5.X
    sed -i 's|test ${makeinfo_version_min} -lt 7|test ${makeinfo_version_min} -lt 0|' configure
    # Fix the config script to look in Makeconf for LDFLAGS
    sed -i '/LIBS=`eval $query VAR=LIBS`/a\LDFLAGS=`eval $query VAR=LDFLAGS`' src/scripts/config
}

build() {
    # Set up the environment for MKL
    source /opt/intel/mkl/bin/mklvars.sh ${_intel_arch}
    _icclibpath=$(echo $MKLROOT | sed "s%mkl%compiler%g")/lib/${_intel_arch}
    _mkllibpath=$MKLROOT/lib/${_intel_arch}
    _mkllibs=" -fopenmp -Wl,--no-as-needed -L${_mkllibpath} -l${_intel_lib} -lmkl_core -lmkl_gnu_thread -ldl -lpthread -lm"
    LDFLAGS="${LDFLAGS} -L${_icclibpath}"
    
    
    if [ $_CC = "icc" ]; then
        export CC="icc"
        export CXX="icpc"
        export AR="xiar"
        export LD="xild"
        export _F77="ifort"
        export _FC="ifort"
    else
        export _F77="gfortran"
        export _FC="gfortran"
    fi
    
    cd R-${pkgver}
    ./configure  --prefix=/usr \
     	--libdir=/usr/lib \
     	--sysconfdir=/etc/R \
     	--datarootdir=/usr/share \
     	rsharedir=/usr/share/R/ \
     	rincludedir=/usr/include/R/ \
     	rdocdir=/usr/share/doc/R/ \
     	--with-x \
     	--enable-R-shlib \
     	--with-blas="${_mkllibs}" \
     	--with-lapack \
     	F77=${_F77} \
     	FC=${_FC} \
     	LIBnn=lib
    
    # Place Intel's basic math library prior to GLIBC libm 
    sed -i "s/\(^\| \)-lm\( \|$\)/\1-limf -lm\2/g" {./,etc/}Makeconf
    
    # Build the package
    make
    
    # make libRmath.so
    cd src/nmath/standalone
    make shared
}

check() {
    cd R-${pkgver}
    make check-recommended
}

package() {
    cd R-${pkgver}
    make DESTDIR="${pkgdir}" install
    
    # install libRmath.so
    cd src/nmath/standalone
    make DESTDIR="${pkgdir}" install
    
    #  Fixup R wrapper scripts.
    sed -i "s|${pkgdir} ||" "${pkgdir}/usr/bin/R"
    rm "${pkgdir}/usr/lib/R/bin/R"
    cd "${pkgdir}/usr/lib/R/bin"
    ln -s ../../../bin/R
    
    # install some freedesktop.org compatibility
    install -Dm644 "${srcdir}/r.desktop" \
     "${pkgdir}/usr/share/applications/r.desktop"
    install -Dm644 "${srcdir}/r.png" \
     "${pkgdir}/usr/share/pixmaps/r.png"
    
    # move the config directory to /etc and create symlinks
    install -d "${pkgdir}/etc/R"
    cd "${pkgdir}/usr/lib/R/etc"
    for i in *; do
        mv -f ${i} "${pkgdir}/etc/R"
        ln -s /etc/R/${i} ${i}
    done
    
    # Install ld.so.conf.d file to ensure other applications access the shared lib
    install -Dm644 "${srcdir}/R.conf" "${pkgdir}/etc/ld.so.conf.d/R.conf"
}