rstudio: Fix recompilation issue with custom package set

This attempts to fix the issue described at
https://github.com/NixOS/nixpkgs/pull/22219#issuecomment-291801133.
Any change to the custom packages passed to RStudio causes this to
completely rebuild RStudio, which is completely unnecessary and also a
bit of a hindrance as it's a fairly slow build.

This rolls back most of that old PR, and instead implements something
more like rWrapper.  Existing configurations with the old useRPackages
will break.
This commit is contained in:
Chris Hodapp
2017-05-01 08:59:43 -04:00
parent e82070382a
commit 29969a5ec7
5 changed files with 52 additions and 47 deletions

View File

@@ -1,19 +1,12 @@
{ stdenv, R, makeWrapper, recommendedPackages, packages }:
stdenv.mkDerivation rec {
stdenv.mkDerivation {
name = R.name + "-wrapper";
buildInputs = [makeWrapper R] ++ recommendedPackages ++ packages;
unpackPhase = ":";
# This filename is used in 'installPhase', but needs to be
# referenced elsewhere. This will be relative to this package's
# path.
passthru = {
fixLibsR = "fix_libs.R";
};
installPhase = ''
mkdir -p $out/bin
cd ${R}/bin
@@ -21,17 +14,6 @@ stdenv.mkDerivation rec {
makeWrapper ${R}/bin/$exe $out/bin/$exe \
--prefix "R_LIBS_SITE" ":" "$R_LIBS_SITE"
done
# RStudio (and perhaps other packages) overrides the R_LIBS_SITE
# which the wrapper above applies, and as a result packages
# installed in the wrapper (as in the method described in
# https://nixos.org/nixpkgs/manual/#r-packages) aren't visible.
# The below turns R_LIBS_SITE into some R startup code which can
# correct this.
echo "# Autogenerated by wrapper.nix from R_LIBS_SITE" > $out/${passthru.fixLibsR}
echo -n ".libPaths(c(.libPaths(), \"" >> $out/${passthru.fixLibsR}
echo -n $R_LIBS_SITE | sed -e 's/:/", "/g' >> $out/${passthru.fixLibsR}
echo -n "\"))" >> $out/${passthru.fixLibsR}
echo >> $out/${passthru.fixLibsR}
'';
meta = {