Ruby no NixOS - Falha na instalação do Gem FFI ao criar extensões nativas

0

Eu sou um Rubiísta de muitos anos. Não consigo determinar o que está faltando para impedir a instalação da FFI.

Aqui está o erro do arquivo make.out (tem que amar esse nome):

make[3]: *** [Makefile:1048: libffi_convenience.la] Error 1
make[3]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[2]: *** [Makefile:1309: all-recursive] Error 1
make[2]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make[1]: *** [Makefile:617: all] Error 2
make[1]: Leaving directory '/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux'
make: *** [libffi.mk:9: "/home/dw/.gem/ruby/2.4.0/gems/ffi-1.9.23/ext/ffi_c/libffi-x86_64-linux"/.libs/libffi_convenience.a] Error 2

make failed, exit code 2

Eu verifiquei o nixpkgs e vi que libffi-3.2.1 e pure-ffi-0.14 estavam disponíveis. Eu instalei os dois. Ainda estou recebendo o erro.

    
por David West 28.04.2018 / 14:26

1 resposta

0

A primeira opção é usar o bundix . Ele usa um arquivo de substituição global para injetar dependências do sistema: link

As gemas mais importantes devem ser encontradas lá, incluindo o ffi gem, que você está tentando instalar.

Se você não quiser / pode usar o bundix, a alternativa é um nix-shell que fornece o ambiente de criação correto.

Para o ffi gem você também pode emprestar o código da gem-config do nixpkgs:

with import <nixpkgs> {};
stdenv.mkDerivation {
  name = "env";
  buildInputs = [
    ffi pkgconfig
  ];
}

Em seguida, basta executar nix-shell no projeto. Esta etapa também pode ser automatizada usando o suporte nix do direnv. A instalação de ffi via nix-env não funciona porque ela não define a variável NIX_CFLAGS_COMPILE e NIX_LDFLAGS que é necessária para que a ffi gem encontre o cabeçalho / as bibliotecas corretas durante a compilação.

    
por 22.05.2018 / 16:28

Tags