如何在 nixpkgs 中使用新的 `pythonOutputDistHook`?

如何在 nixpkgs 中使用新的 `pythonOutputDistHook`?

我尝试了很多方法来完成我的项目创建一个result-dist带有轮子的文件夹,我可以将其发布到 PyPI。不知何故,即使我使用的是 nixpkgs 版本pythonOutputDistHook在其中,我只得到一个result文件夹,而不是一个result-dist文件夹。

到目前为止我的调查:

  1. pythonOutputDistHook是可选的,基于withDistOutput.

  2. withDistOutputformat如果包含其中之一,则为 true ["pyproject" "setuptools" "flit"]

  3. format ? "setuptools"我的代码没有设置format,所以pythonOutputDistHook应该包含在内。

  4. 我已经验证过它pythonOutputDistHook我的尼克斯包装

    $ cd nixpkgs
    $ git checkout 9c14978f845f33b152f722709caf42148580a30c
    HEAD is now at 9c14978f845 Merge master into staging-next
    $ git grep pythonOutputDistHook
    pkgs/development/interpreters/python/hooks/default.nix:  pythonOutputDistHook = callPackage ({ }:
    pkgs/development/interpreters/python/mk-python-derivation.nix:, pythonOutputDistHook
    pkgs/development/interpreters/python/mk-python-derivation.nix:      pythonOutputDistHook
    pkgs/top-level/python-packages.nix:    pythonOutputDistHook
    

是否有什么东西会pkgs向 Nix 文件之一注入不同的参数?

答案1

Nixpkgs ( ) 中的标准构建器stdenv.mkDerivation可以创建多个输出。一些典型的输出是默认输出,out但也有libbindevdoc。任何派生都可以指定它创建的输出。输出可以直接参考:

$ nix-build -A bash.dev
/nix/store/pji7665awsg1fcp2irhnfm3508lvsgh0-bash-5.1-p16-dev

最近, (在幕后buildPythonPackage调用)创建了一个输出,其中包含用于分发的工件,特别是轮子:stdenv.mkDerivationdist

$ find $(nix-build -A python3.pkgs.pytest.dist)
/nix/store/flg6ahbbmppq5vpjcxdhzs9fz7dx86vq-python3.10-pytest-7.1.3-dist
/nix/store/flg6ahbbmppq5vpjcxdhzs9fz7dx86vq-python3.10-pytest-7.1.3-dist/pytest-7.1.3-py3-none-any.whl

相关内容