guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

R and R modules (and a Ruby twist)


From: Pjotr Prins
Subject: R and R modules (and a Ruby twist)
Date: Thu, 24 Sep 2015 10:37:32 +0200
User-agent: Mutt/1.5.21 (2010-09-15)

When we add an R module, such as R-qtl, the R-build-system does not
provide R itself as a propagated input, i.e., the R interpreter is not
in the profile. In the R world this is kinda odd.  Almost all modules
used from R. I.e. start up R and

  library(qtl)
  do something with R/qtl

Would have use people use that module in interactive mode. In the
current package install R is not included as a symlink and needs to be
separately installed.

Is this really a good idea? 

Personally I think R should be in the path because that is the only
way a module is useful to 99% of users.

We can actually instruct users to install R separately (no different
from other packaging systems). Note that this opens its own can of
worms when the two are out of sync. I can imagine Guix modules having
different R's as dependencies.

It is one other thing I am trying to think through. With a standard R
distribution, every package is strictly aligned with the interpreter
(they get installed from inside R).

With Guix' rolling model of package updates modules may go out of sync
- even if they are correctly linked with an underlying R. So mixing
interpreters and modules/packages may potentially give problems. 

The Ruby twist:

With Ruby we use the major version numbering of the interpreter to
share modules (named gems) - i.e. anything 2.2.x gets installed in the
profile under 2.2.0 - this is the default model in the Ruby world. I
am actually not completely happy with this model because it does not
isolate interpreters and the installed gems. Even though it `works' in
almost 100% of use cases. What happens now, for example, is that a
Ruby with ssl and and Ruby without ssl always share gems. This is
pretty evil. I would prefer incorporating the SHA value of the
interpreter in the Guix profile to host gems. That would guarantee
perfect isolation and is pretty easy to achieve.

Pj.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]