help-guix
[Top][All Lists]
Advanced

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

Re: using guix for ruby development


From: Marius Bakke
Subject: Re: using guix for ruby development
Date: Fri, 16 Feb 2018 19:44:53 +0100
User-agent: Notmuch/0.26 (https://notmuchmail.org) Emacs/25.3.1 (x86_64-pc-linux-gnu)

Divan Santana <address@hidden> writes:

> Divan Santana <address@hidden> writes:
>
>> Hi all,
>>
>> So I'm *trying* to use guix on Parabola Linux to provide the rubies and
>> replace some other functionality of like chruby for instance.
>>
>> I'm a bit of a noob with guix and even ruby, so it's a bit of a
>> challenge.
>>
>> I've read through these nice notes[1] by Pjotr. The answers I'm looking
>> for, may well be in there but I might have missed it.
>>
>>   [1]:
>>     - https://gitlab.com/pjotrp/guix-notes/blob/master/RUBY.org
>>     - https://gitlab.com/pjotrp/guix-notes/blob/master/RUBYGEMS-Nokogiri.org
>>
>> I've also used the linked in script[2] which helps.
>>
>> [2]: https://gitlab.com/pjotrp/guix-notes/blob/master/scripts/ruby-guix-env
>>
>> Anyway the issue:
>>
>>   $ gem env
>>   RubyGems Environment:
>>     - RUBYGEMS VERSION: 2.6.14
>>     - RUBY VERSION: 2.4.3 (2017-12-14 patchlevel 205) [x86_64-linux]
>>     - INSTALLATION DIRECTORY: 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0
>>     - USER INSTALLATION DIRECTORY: /home/admin/.gem/ruby/2.4.0
>>     - RUBY EXECUTABLE: 
>> /gnu/store/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/bin/ruby
>>     - EXECUTABLE DIRECTORY: 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/bin
>>     - SPEC CACHE DIRECTORY: 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/specs
>>     - SYSTEM CONFIGURATION DIRECTORY: 
>> /gnu/store/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/etc
>>     - RUBYGEMS PLATFORMS:
>>       - ruby
>>       - x86_64-linux
>>     - GEM PATHS:
>>        - /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0
>>        - /home/admin/.guix-profile/lib/ruby/vendor_ruby
>>        - /home/admin/.guix-profile/lib/ruby/gems/2.4.0/
>>     - GEM CONFIGURATION:
>>        - :update_sources => true
>>        - :verbose => true
>>        - :backtrace => false
>>        - :bulk_threshold => 1000
>>        - "gem" => "--no-rdoc"
>>     - REMOTE SOURCES:
>>        - https://rubygems.org/
>>     - SHELL PATH:
>>        - 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/bin
>>        - /home/admin/src/ds-config/guile/scripts
>>        - /home/admin/src/ds-config/bin
>>        - /home/admin/.node_modules/node_modules/.bin
>>        - /home/admin/.guix-profile/bin
>>        - /home/admin/src/ds-config/guile/scripts
>>        - /home/admin/src/ds-config/bin
>>        - /home/admin/.node_modules/node_modules/.bin
>>        - /home/admin/.guix-profile/bin
>>        - /usr/local/sbin
>>        - /usr/local/bin
>>        - /usr/bin
>>        - /usr/lib/jvm/default/bin
>>        - /usr/bin/site_perl
>>        - /usr/bin/vendor_perl
>>        - /usr/bin/core_perl
>>
>> So I'm in a ruby project. I type `bundle install` to install the gems.
>>
>> It goes and fetches the missing gems and installs them in 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/gems/
>>
>> That's great. I fire up the project[3] with:
>>
>>   [3]: https://gitlab.com/gitlab-com/gitlab-docs (using an older commit
>>   because ruby25 is not yet in guix repos.
>>
>>   $ bundle exec nanoc live
>>
>>   Captain! We’ve been hit!
>>
>>   LoadError: liblzma.so.5: cannot open shared object file: No such file or 
>> directory - 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/gems/nokogiri-1.7.2/lib/nokogiri/nokogiri.so
>>
>>   $ ldd 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/gems/nokogiri-1.7.2/lib/nokogiri/nokogiri.so
>>           linux-vdso.so.1 (0x00007ffff6b10000)
>>           libm.so.6 => /usr/lib/libm.so.6 (0x00007f469080f000)
>>           libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f469060b000)
>>           liblzma.so.5 => /usr/lib/liblzma.so.5 (0x00007f46903e5000)
>>           libz.so.1 => /usr/lib/libz.so.1 (0x00007f46901ce000)
>>           libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f468ffb0000)
>>           libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007f468fd78000)
>>           libc.so.6 => /usr/lib/libc.so.6 (0x00007f468f9c1000)
>>           /usr/lib64/ld-linux-x86-64.so.2 (0x00007f4690f97000)
>>
>> Guessing the reason is because it seems to compile against the OS system
>> and not the "guix system". And that could cause problems?
>>
>> Other gems also are like this.
>>
>>   $ ldd 
>> /home/admin/.gem/sx7ih0vgp7q8zj7k58xjvnp3yghig0ll-ruby-2.4.3/2.4.0/gems/ffi-1.9.18/lib/ffi_c.so
>>           linux-vdso.so.1 (0x00007ffd1bdf1000)
>>           libffi.so.6 => /usr/lib/libffi.so.6 (0x00007f6af531e000)
>>           libpthread.so.0 => /usr/lib/libpthread.so.0 (0x00007f6af5100000)
>>           libdl.so.2 => /usr/lib/libdl.so.2 (0x00007f6af4efc000)
>>           libcrypt.so.1 => /usr/lib/libcrypt.so.1 (0x00007f6af4cc4000)
>>           libm.so.6 => /usr/lib/libm.so.6 (0x00007f6af4978000)
>>           libc.so.6 => /usr/lib/libc.so.6 (0x00007f6af45c1000)
>>           /usr/lib64/ld-linux-x86-64.so.2 (0x00007f6af574c000)
>>
>> I could install ruby-nokogiri via guix but that provides 1.8 and I need
>> 1.7. :(
>>
>> Is there a simple way of getting these gems installed to use guix system
>> libs so things don't break?
>
> So for this particular project I managed to get it working via changing
> the Gemfile to up the version on nokogiri to 1.8 so I can use the
> nokogiri from guix. Did the same with ffi which had similar issue.
>
> That's not ideal as one may need a diff version or the gem may not be
> packaged yet.
>
> Any thoughts?

Mixing Guix packages with other package managers can be difficult.  In
this situation I would write a "Guixfile" and use that instead of
Bundler.

(use-modules (guix build-system ruby)
             ((guix licenses) #:prefix license:)
             (guix download)
             (guix packages)
             (gnu packages ruby))

(define-public ruby-nokogiri-1.7
  (package
    (inherit ruby-nokogiri)
    (version "1.7.0")
    (source (origin
              (method url-fetch)
              (uri (rubygems-uri "nokogiri" version))
              (sha256
               (base32
                "1qx2adp6gdnaipvv0nshiq2hgnra44c8j5vkjjfm73sr9wbdmbk3"))))))

(define-public gitlab-docs
  (package
    (name "gitlab-docs")
    (version "master")
    (source (dirname (current-filename)))
    (build-system ruby-build-system)
    (propagated-inputs
     `(("ruby-nokogiri" ,ruby-nokogiri-1.7)
       ("ruby-redcarpet" ,ruby-redcarpet)))
    (home-page "https://gitlab.com/gitlab-com/gitlab-docs";)
    (synopsis "GitLab documentation")
    (description "Documentation for the GitLab git server")
    (license license:expat)))

gitlab-docs
And then start the environment with `guix environment -l Guixfile.scm`.

I see the Gemfile requires some gems that are not available in Guix yet,
so I would attempt to write package definitions for those as well.

Hope this helps!

Attachment: signature.asc
Description: PGP signature


reply via email to

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