NixOS Build Error: “dbus / dbus.h” não encontrado

0

Estou tentando construir o driver "nvidiaBeta", mas ele falha ao criar nvidia-settings com o erro

gtk+-2.x/ctkgridlicense.c:38:23: fatal error: dbus/dbus.h: No such file or directory

Eu tentei instalar todos os tipos de pacotes dbus, mas a coisa mais próxima que eu obtenho na minha loja nix é um "dbus-c ++ / dbus.h" da derivação dbus_cplusplus. Enquanto pesquisava, eu li que, aparentemente, o que eu preciso deveria estar contido em "dbus-libs", mas não parece estar disponível no canal 17.03.

Não consigo descobrir qual derivação deve ser usada nesta biblioteca. Posso de alguma forma contornar o problema e fazê-lo usar o que eu tenho da derivação dbus_cplusplus?

    
por ison 17.08.2017 / 02:10

2 respostas

0

Como já foi mencionado, o Nix não se importará com pacotes instalados pelo sistema ou pelo usuário ao criar um pacote, e o pacote em questão precisa declarar todas as suas dependências explicitamente.

Com relação a esse problema específico, o arquivo dbus/dbus.h pode ser encontrado na saída dev da derivação dbus . O Nix também fornece recursos para sobrescrever as definições de pacotes e podemos usá-las para alimentar dbus.dev para criar entradas de configurações da nvidia. Adicionando o seguinte a configuration.nix :

nixpkgs.config.packageOverrides = pkgs:
{
  linuxPackages = pkgs.linuxPackages.extend(self: super: {
    nvidia_x11_beta = super.nvidia_x11_beta // {
      settings = super.nvidia_x11_beta.settings.overrideAttrs(old: {
        buildInputs = old.buildInputs ++ [ pkgs.dbus.dev ];
      });
    };
  });
};

permite que a compilação seja bem-sucedida no meu sistema 17.03.

    
por 21.08.2017 / 16:15
0

Ao contrário de outras distribuições, no NixOS, mesmo que você instale as bibliotecas certas, não fará diferença, porque os pacotes devem declarar suas dependências para que uma construção seja bem-sucedida.

Por exemplo, se você tentar construir o pacote A e isso depende do pacote B , a instalação do pacote B não fornecerá a dependência ; O pacote A simplesmente não o verá.

Quanto à Nvidia, eu não vejo nvidiaBeta como uma opção. Você pode usar "nv", que é o driver de código aberto, ou "nvidia", que é o driver proprietário. Consulte link

    
por 20.08.2017 / 19:34

Tags