nixpkgs/pkgs/applications/science/math/R/default.nix

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

129 lines
5.1 KiB
Nix
Raw Normal View History

{ lib, stdenv, fetchurl, bzip2, gfortran, libX11, libXmu, libXt, libjpeg, libpng
2020-04-25 15:39:43 +02:00
, libtiff, ncurses, pango, pcre2, perl, readline, tcl, texLive, tk, xz, zlib
, less, texinfo, graphviz, icu, pkg-config, bison, imake, which, jdk, blas, lapack
2021-08-13 02:19:31 +02:00
, curl, Cocoa, Foundation, libobjc, libcxx, tzdata
, withRecommendedPackages ? true
, enableStrictBarrier ? false
2021-08-30 18:24:42 +02:00
, enableMemoryProfiling ? false
# R as of writing does not support outputting both .so and .a files; it outputs:
# --enable-R-static-lib conflicts with --enable-R-shlib and will be ignored
, static ? false
2013-05-23 11:35:54 +02:00
}:
assert (!blas.isILP64) && (!lapack.isILP64);
2013-05-23 11:35:54 +02:00
stdenv.mkDerivation rec {
2021-03-04 03:46:54 +01:00
pname = "R";
2022-12-02 01:25:02 +01:00
version = "4.2.2";
2013-05-23 11:35:54 +02:00
src = fetchurl {
2021-03-04 03:46:54 +01:00
url = "https://cran.r-project.org/src/base/R-${lib.versions.major version}/${pname}-${version}.tar.gz";
2022-12-02 01:25:02 +01:00
sha256 = "sha256-D/YrQuxRr6VxPK7nxP3noMRZQLo5vvjFyUh/7wyVPfU=";
2013-05-23 11:35:54 +02:00
};
dontUseImakeConfigure = true;
nativeBuildInputs = [ pkg-config ];
2017-02-26 22:26:12 +01:00
buildInputs = [
bzip2 gfortran libX11 libXmu libXt libXt libjpeg libpng libtiff ncurses
2020-04-25 15:39:43 +02:00
pango pcre2 perl readline texLive xz zlib less texinfo graphviz icu
bison imake which blas lapack curl tcl tk jdk
2021-01-15 14:21:58 +01:00
] ++ lib.optionals stdenv.isDarwin [ Cocoa Foundation libobjc libcxx ];
patches = [
./no-usr-local-search-paths.patch
];
2021-11-17 11:01:28 +01:00
# Test of the examples for package 'tcltk' fails in Darwin sandbox. See:
# https://github.com/NixOS/nixpkgs/issues/146131
postPatch = lib.optionalString stdenv.isDarwin ''
substituteInPlace configure \
--replace "-install_name libRblas.dylib" "-install_name $out/lib/R/lib/libRblas.dylib" \
--replace "-install_name libRlapack.dylib" "-install_name $out/lib/R/lib/libRlapack.dylib" \
--replace "-install_name libR.dylib" "-install_name $out/lib/R/lib/libR.dylib"
2021-11-17 11:01:28 +01:00
substituteInPlace tests/Examples/Makefile.in \
--replace "test-Examples: test-Examples-Base" "test-Examples:" # do not test the examples
2018-01-24 00:22:40 +01:00
'';
dontDisableStatic = static;
preConfigure = ''
configureFlagsArray=(
--disable-lto
2021-01-15 14:21:58 +01:00
--with${lib.optionalString (!withRecommendedPackages) "out"}-recommended-packages
--with-blas="-L${blas}/lib -lblas"
--with-lapack="-L${lapack}/lib -llapack"
--with-readline
--with-tcltk --with-tcl-config="${tcl}/lib/tclConfig.sh" --with-tk-config="${tk}/lib/tkConfig.sh"
--with-cairo
--with-libpng
--with-jpeglib
--with-libtiff
--with-ICU
2021-01-15 14:21:58 +01:00
${lib.optionalString enableStrictBarrier "--enable-strict-barrier"}
2021-08-30 18:24:42 +02:00
${lib.optionalString enableMemoryProfiling "--enable-memory-profiling"}
${if static then "--enable-R-static-lib" else "--enable-R-shlib"}
AR=$(type -p ar)
AWK=$(type -p gawk)
2018-01-24 00:22:40 +01:00
CC=$(type -p cc)
CXX=$(type -p c++)
FC="${gfortran}/bin/gfortran" F77="${gfortran}/bin/gfortran"
JAVA_HOME="${jdk}"
RANLIB=$(type -p ranlib)
R_SHELL="${stdenv.shell}"
2021-01-15 14:21:58 +01:00
'' + lib.optionalString stdenv.isDarwin ''
--disable-R-framework
2021-04-29 18:34:34 +02:00
--without-x
OBJC="clang"
CPPFLAGS="-isystem ${lib.getDev libcxx}/include/c++/v1"
LDFLAGS="-L${lib.getLib libcxx}/lib"
'' + ''
)
echo >>etc/Renviron.in "TCLLIBPATH=${tk}/lib"
echo >>etc/Renviron.in "TZDIR=${tzdata}/share/zoneinfo"
'';
installTargets = [ "install" "install-info" "install-pdf" ];
# The store path to "which" is baked into src/library/base/R/unix/system.unix.R,
# but Nix cannot detect it as a run-time dependency because the installed file
# is compiled and compressed, which hides the store path.
postFixup = "echo ${which} > $out/nix-support/undetected-runtime-dependencies";
doCheck = true;
preCheck = "export HOME=$TMPDIR; export TZ=CET; bin/Rscript -e 'sessionInfo()'";
2013-05-23 11:35:54 +02:00
enableParallelBuilding = true;
setupHook = ./setup-hook.sh;
meta = with lib; {
2020-03-03 12:34:22 +01:00
homepage = "http://www.r-project.org/";
description = "Free software environment for statistical computing and graphics";
2017-02-26 22:26:12 +01:00
license = licenses.gpl2Plus;
2013-05-23 11:35:54 +02:00
longDescription = ''
GNU R is a language and environment for statistical computing and
graphics that provides a wide variety of statistical (linear and
nonlinear modelling, classical statistical tests, time-series
analysis, classification, clustering, ...) and graphical
techniques, and is highly extensible. One of R's strengths is the
ease with which well-designed publication-quality plots can be
produced, including mathematical symbols and formulae where
needed. R is an integrated suite of software facilities for data
manipulation, calculation and graphical display. It includes an
effective data handling and storage facility, a suite of operators
for calculations on arrays, in particular matrices, a large,
coherent, integrated collection of intermediate tools for data
analysis, graphical facilities for data analysis and display
either on-screen or on hardcopy, and a well-developed, simple and
effective programming language which includes conditionals, loops,
user-defined recursive functions and input and output facilities.
'';
2017-02-26 22:26:12 +01:00
platforms = platforms.all;
2014-12-03 14:47:37 +01:00
maintainers = with maintainers; [ jbedo ] ++ teams.sage.members;
2013-05-23 11:35:54 +02:00
};
}