LINUX.ORG.RU

Помогите пожалуйста с пакетом для NixOS

 , , ,


0

3

Решил я попробовать NixOS, может поставлю ее на каком-нибудь устройстве. Только версия эмулятора терминала Terminator там устаревшая. 2 часа пытаюсь модифицировать скрипт для сборки пакета, никак не получается. Вот он:

{ stdenv, fetchurl, pythonPackages, pango, keybinder, vte, gettext, intltool, file, gnome3
}:

pythonPackages.buildPythonApplication rec {
  name = "terminator-${version}";
  version = "1.91";

  src = fetchurl {
    url = "https://launchpad.net/terminator/gtk3/${version}/+download/${name}.tar.gz";
    sha256 = "95f76e3c0253956d19ceab2f8da709a496f1b9cf9b1c5b8d3cd0b6da3cc7be69";
  };

  buildInputs = [ gnome3.gtk gnome3.vte ];

  nativeBuildInputs = [ file intltool ];

  pythonPath = with pythonPackages; [
    pygobject3 vte keybinder notify gettext pango psutil pycairo
  ];

  postPatch = ''
    patchShebangs .
  '';

  checkPhase = ''
    ./run_tests
  '';

  meta = with stdenv.lib; {
    description = "Terminal emulator with support for tiling and tabs";
    longDescription = ''
      The goal of this project is to produce a useful tool for arranging
      terminals. It is inspired by programs such as gnome-multi-term,
      quadkonsole, etc. in that the main focus is arranging terminals in grids
      (tabs is the most common default method, which Terminator also supports).
    '';
    homepage = https://gnometerminator.blogspot.no/p/introduction.html;
    license = licenses.gpl2;
    maintainers = with maintainers; [ bjornfor globin ];
    platforms = platforms.linux;
  };
}
Вот лог сборки. Что ему не нравится, почему pygobject3 не хватает GTK, когда я его указал - 2 часа понять не могу. Помогите, пожалуйста!

★★★★★

Создай shell.nix затем установи в этом окружении нужный pygobject и собери пакет в этом окружении, я так всегда решаю проблему со сборкой некоторых пакетов и попробуй поставить пакет gtk3.dev и gtk2.dev. И да я глянул, там только ведь есть python27Packages и python36Packages, может в этом дело?

playX ★★ ()
Последнее исправление: playX (всего исправлений: 2)

Не спец, по оригинальной проблеме сказать нечего, но вот

pythonPath = with pythonPackages; [ pygobject3 vte keybinder notify gettext pango psutil pycairo ];

pythonPath: List of packages to be added into $PYTHONPATH. Packages in pythonPath are not propagated (contrary to propagatedBuildInputs).

это кажется мне фигней. Почему не в propagatedBuildInputs?

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1)
Ответ на: комментарий от t184256

Так было в оригинальном пакете, вот здесь. Я его просто хочу модифицировать. Менеджера пакетов практически не знаю, вот в этом и причина.

и попробуй поставить пакет gtk3.dev и gtk2.dev

Таких пакетов там вообще нет.

Rinaldus ★★★★★ ()
Последнее исправление: Rinaldus (всего исправлений: 1)

Добавь gtk3, vte и gobjectIntrospection в buildInputs --- так у меня собралось и все тесты прошли, но запустить не получилось.

anonymous ()

Мысль!

Что ему не нравится, почему pygobject3 не хватает GTK, когда я его указал

где? я что-то не вижу gtk3 в твоем pythonPath, вообще никакой зависимости от питонских биндингов к GTK.

t184256 ★★★★★ ()
Последнее исправление: t184256 (всего исправлений: 1)

Вот патч. Так собирается и запускается. Но возможно там лишние зависимости остались — попробуй добавить только gnome3.vte, gobjectIntrospections и wrapGAppsHook. Если не заработает, то и всё остальное.

anonymous ()
Ответ на: комментарий от anonymous

Еще cairo надо, а во pango уже лишний.

anonymous ()
Ответ на: комментарий от anonymous

Я добраться до виртуалки с NixOS смогу только завтра, но поверю на слово. Спасибо огромное! Ты не мог бы мне подсказать, что бы такое почитать, чтобы самому научиться создавать и модифицировать пакеты? Я 2 часа перерыл практически все, в том числе и на официальном сайте, но безрезультатно.
И что такое wrapGAppsHook?

Rinaldus ★★★★★ ()
Последнее исправление: Rinaldus (всего исправлений: 1)
Ответ на: комментарий от Rinaldus

Да я и сам не очень хорошо в этом всё разбираюсь :D Про wrapGAppsHook подсказал друг, который действительно разбирается в Nix(OS) и мейнтейнит её, остальное — из зависимостей terminator'а (gnome3.vte,cairo) и hello world'а на питоне с gtk3(gobjectIntrospect).

что бы такое почитать, чтобы самому научиться создавать и модифицировать пакеты?

Начать однозначно стоит с Nixpkgs manual. Также, имхо, полезно смотреть как сделаны другие схожие пакеты --- например wrapGAppsHook проскакивал в пакете для GEdit, но я не догадался, что дело в нём.

И что такое wrapGAppsHook?

Как мне объяснил тот самый друг: gtk-специфичный хук, который добавляет пути для GTK в обёртку над программой.

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.