Nixos

在 Nix 中,如何建構具有 Python 安裝後腳本的包?

  • December 5, 2019

我正在嘗試為Foliate進行 Nix 派生,這是我的第一個真正的派生,所以我還不知道我在做什麼。

這是我到目前為止所擁有的。它建構並安裝,但失敗並出現以下錯誤:

Running custom install script '/build/source/build-aux/meson/postinstall.py'
Failed to run install script '/build/source/build-aux/meson/postinstall.py'
FAILED: meson-install
/nix/store/2b4cdbcs1xbqjna5dr4qrr1p9p9bgm98-meson-0.51.2/bin/meson install --no-rebuild
ninja: build stopped: subcommand failed.
builder for '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed with exit code 1
error: build of '/nix/store/32vn9xlxlk9zb7vmpm90bz5i5qq59fjc-foliate-1.5.3.drv' failed

我嘗試添加python3為建構依賴項,但這似乎不起作用。我錯過了什麼?

另外,還有其他方法可以改進或簡化這種推導嗎?

發生此錯誤是因為文件的 shebang 指向類似 的/usr/bin/env內容,這在 Nix 沙箱中不可用。

我們通常通過呼叫patchShebangs該部分中的文件來解決這個問題postPatch

有時該文件不可執行,因此您可能需要這樣做;不過,這不是問題。

postPatch = ''
 chmod +x build-aux/meson/postinstall.py # not necessary here
 patchShebangs build-aux/meson/postinstall.py
'';

另請注意,我們已經有一個(不完整的)PR 添加 Foliate,您可能想看看。

引用自:https://unix.stackexchange.com/questions/555802