在 Nix 中,如何构建具有 Python 安装后脚本的包?

在 Nix 中,如何构建具有 Python 安装后脚本的包?

我正在尝试对 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为构建依赖项,但这似乎不起作用。我缺少什么?

另外,还有其他方法可以改进或简化这个推导吗?

答案1

发生此错误的原因是文件的 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添加叶酸,您可能想看一下。

相关内容