Как установить libgtk2.0-dev на NixOS? - PullRequest
0 голосов
/ 06 апреля 2019

Я пытаюсь построить это приложение из источника: https://gitlab.com/TheFrozenWatchers/LeagueDisplays

Всякий раз, когда я пытаюсь запустить команду make, она завершается с 'gtk/gtk.h' file not found. Есть ли известный способ установить libgtk2.0-dev в Nix (я полагаю, проблема заключается в отсутствии этой проблемы)?

Для справки, я использую nix-shell аргументы: nix-shell -p xorg.libX11 gtk2. Я полагаю, что libgtk2 не включен в пакет gtk2, но я не уверен, как на самом деле получить правильные заголовки в среду, чтобы это работало.

1 Ответ

1 голос
/ 10 апреля 2019

Вот shell.nix, который вы можете использовать:

with import <nixpkgs> {};

stdenv.mkDerivation rec {
  name = "league-displays-${version}";
  version = "master";

  src = ./.;

  doCheck = true;

  nativeBuildInputs = [ pkgconfig ];
  buildInputs = [ gtk2-x11 clang rapidjson ];

  preBuild = ''
    substituteAllInPlace src/themes_service.h --replace "include/rapidjson/document.h" "rapidjson/document.h"
    substituteInPlace Makefile --replace "pkg-config --libs --cflags gtk+-2.0" "pkg-config --libs --cflags gtk+-2.0 RapidJSON"
  '';
}

При входе в оболочку вместо make запускается buildPhase. Таким образом, шаг preBuild выполняется и применяет некоторые исправления.

Несмотря на то, что я учел все известные зависимости, проект все еще не создается из-за ошибок, связанных с приложением:

build flags: SHELL=/nix/store/mcyvp1s45scjkkhyb1m16aqlsb8wr6hs-bash-interactive-4.4-p23/bin/bash
clang++ -O3 -g -w -I. -I./src/ -Wl,-rpath,. -L./bin/ -std=c++14 -Wall -lX11 -lXt -lcef -pthread -lrt -lz `pkg-config --libs --cflags gtk+-2.0 RapidJSON` -I./thirdparty/ -c src/background_daemon.cc
src/background_daemon.cc:23:9: error: unknown type name 'AppConfig'
        AppConfig* cfg = AppConfig::Acquire();
        ^
src/background_daemon.cc:23:26: error: use of undeclared identifier 'AppConfig'
        AppConfig* cfg = AppConfig::Acquire();
                         ^
src/background_daemon.cc:26:9: error: use of undeclared identifier 'AppConfig'
        AppConfig::Release();
        ^
src/background_daemon.cc:71:9: error: unknown type name 'AppConfig'
        AppConfig* cfg;
        ^
src/background_daemon.cc:76:19: error: use of undeclared identifier 'AppConfig'
            cfg = AppConfig::Acquire();
                  ^
src/background_daemon.cc:110:37: error: use of undeclared identifier 'fnvHash'
                unsigned int hash = fnvHash(wp.c_str());
                                    ^
src/background_daemon.cc:133:13: error: use of undeclared identifier 'AppConfig'
            AppConfig::Release();
            ^
7 errors generated.
make: *** [Makefile:37: background_daemon.o] Error 1
...