2017-12-17 14:19:37 UTC
It's been a while since I looked at this, but I think it's still
As a reminder, currently the search paths for the Ruby packages in Guix
are a bit off , which makes it difficult to use Ruby gems with
different versions of Ruby.
Rubygems by default installs gems to directories specific to the version
of Ruby, and this can be helpful when managing multiple versions of Ruby
and different sets of gem packages in a shared directory, but with Guix,
this isn't necessary, as the store can be used.
Ruby/Rubygems supports installing gems in to a vendor directory, which
is for gems installed by the package system . While Guix blurs the
lines between the "package system" and the "user", using this vendor
directory might come in useful.
I've attached an updated patch, and successfully built every Ruby
package , as well as all of the packages that were changed in the
patch. The only failure was ruby-pg, which failed to build before this
Ideally when using specific versions of ruby, any gems that need to be
build with that version of ruby, would be. While this change doesn't do
that, it does simplify the search paths of ruby packages and the
packages for ruby gems.
Reading the bug report again, I think there was nearly consensus about
merging this, but I wanted to check if anyone has any comments or
experience with Ruby/Rubygems before merging this?
scheme@(guile-user)> (use-modules (gnu packages) (guix packages) (guix search-paths) (ice-9 match))
scheme@(guile-user)> (map (lambda (ruby) (cons (package-version ruby) (match (package-native-search-paths ruby) (() #f) ((($ <search-path-specification> _ files)) files)))) (find-packages-by-name "ruby"))
$1 = (("2.4.3" "lib/ruby/gems/2.4.0") ("2.4.2" "lib/ruby/gems/2.4.0") ("2.3.6" "lib/ruby/gems/2.4.0") ("2.2.9" "lib/ruby/gems/2.4.0") ("2.1.10" "lib/ruby/gems/2.1.0") ("1.8.7-p374" . #f))
3: guix build --keep-going $(guix package -s ruby- | recsel -P name | tr '\n' ' ')