# Description: R is a free software environment for statistical computing and graphics
# URL: https://www.r-project.org/
# Maintainer: Tim Biermann, tbier at posteo dot de
# Depends on: libpcre2 openblas zstd
# Optional: lapack openjdk8 texlive tk

name=r
version=4.6.0
release=1
source=(https://cran.r-project.org/src/base/R-${version::1}/R-$version.tar.gz
  r.desktop r.png R.conf
  R-3.4.1-parallel.patch
  R-4.6.0-no-LDFLAGS-in-libR-pkg-config.patch)

unpack_source() {
  for file in ${source[@]}; do
    case ${file##*/} in
    R-$version.tar.gz)
      echo "Unpacking $(get_filename $file)"
      bsdtar -p -o -C $SRC -xf $(get_filename $file)
      ;;
    *)
      cp $(get_filename $file) $SRC
      ;;
    esac
  done
}

build() {
  cd R-$version

  # override the upstream opinion that curl 8 has an incompatible API
  curlTest=$(grep -n "LIBCURL_VERSION_MAJOR > 7" configure | cut -d: -f1)
  sed -i "$((curlTest + 1))s/exit.1./exit(0)/" configure

  # https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-lang/R/files
  patch -Np1 -i $SRC/R-3.4.1-parallel.patch
  patch -Np1 -i $SRC/R-4.6.0-no-LDFLAGS-in-libR-pkg-config.patch

  # configuring R
  prt-get isinst tk && PKGMK_R+=" --with-x=yes" || PKGMK_R+=" --with-x=no"
  prt-get isinst lapack && PKGMK_R+=" --with-lapack LAPACK_LIBS=$(pkgconf --libs lapack)" || PKGMK_R+=' --without-lapack'
  # this needs a properly working java environment!
  [[ -e $(whereis javac) ]] && PKGMK_R+=" --enable-java" || PKGMK_R+=" --disable-java"

  # set the correct dir for texmf distribution
  sed -i 's|$(rsharedir)/texmf|${datarootdir}/texmf|' share/Makefile.in

  sed -i -e '/R_LIBS_SITE=/s/^/#/g' etc/Renviron.in
  echo 'R_LIBS_SITE=${R_LIBS_SITE-'"'/usr/lib/R/library:/usr/share/R/library'"'}' >> etc/Renviron.in

  export R_PDFVIEWER=/usr/bin/xdg-open
  export R_PRINTCMD=lpr
  export R_BROWSER=/usr/bin/xdg-open

  unset R_HOME
  export ldpath="/usr/lib/R/lib"

  # version 3.6.2 needs at least the addition to FCFLAGS
  export CFLAGS+=' -fPIC'
  export CPPFLAGS+=' -fPIC'
  export FCFLAGS+=' -fPIC'

  CFLAGS+=" -ffat-lto-objects" \
  CXXFLAGS+=" -ffat-lto-objects" \
  ./configure $PKGMK_R \
    --prefix=/usr \
    --libdir=/usr/lib \
    --sysconfdir=/etc/R \
    --datarootdir=/usr/share \
    rsharedir=/usr/share/R/ \
    rincludedir=/usr/include/R/ \
    F77=gfortran \
    LIBnn=lib \
    BLAS_LIBS=$(pkgconf --libs blas) \
    PKG_CONFIG=/usr/bin/pkgconf \
    --enable-BLAS-shlib \
    --enable-R-shlib \
    --enable-byte-compiled-packages \
    --enable-lto \
    --enable-R-profiling \
    --enable-memory-profiling \
    --with-cairo \
    --with-ICU \
    --with-jpeglib \
    --with-libpng \
    --with-libtiff \
    --with-system-tre \
    --without-recommended-packages \
    --disable-R-static-lib \
    --disable-nls
  make

  make -C src/nmath/standalone shared

  make DESTDIR=$PKG install
  make -C src/nmath/standalone DESTDIR=$PKG install

  chmod +x $PKG/usr/lib/R/bin/*
  chmod +x $PKG/usr/share/R/sh/echo.sh
  #chmod -x $PKG/usr/lib/R/library/mgcv/CITATION

  sed -i "s|$PKG ||" $PKG/usr/bin/R
  rm $PKG/usr/lib/R/bin/R
  cd $PKG/usr/lib/R/bin
  ln -s ../../../bin/R

  cd $PKG/usr/lib/R
  ln -s ../../include/R include

  install -Dm644 $SRC/r.desktop \
    $PKG/usr/share/applications/r.desktop
  install -Dm644 $SRC/r.png \
    $PKG/usr/share/pixmaps/r.png
  install -Dm644 $SRC/R.conf \
    $PKG/etc/ld.so.conf.d/R.conf

  install -d $PKG/etc/R
  cd $PKG/usr/lib/R/etc
  for i in *; do
    mv -f $i $PKG/etc/R
    ln -s /etc/R/$i $i
  done

  #clean up
  find $PKG \(\
    -iname '*README*' -o \
    -iname '*COPYING*' -o \
    -iname '*AUTHORS*' -o \
    -iname '*THANKS*' -o \
    -iname '*NEWS*' -o \
    -iname '*LICENSE*' -o \
    -iname '*CHANGELOG*' -o \
    -iname '*LC_MESSAGES*' \
    \) -exec rm -r '{}' \+ || true
    ## doh! don't remove INSTALL or you won't be able to install R packages
    #-iname '*INSTALL*' -o \
    ## rstudio now depends on finding docs that R provides..
    #-iname 'doc' -o \
}
