nix-community / poetry2nix

Convert poetry projects to nix automagically [maintainer=]
MIT License
892 stars 451 forks source link

Provided template fails to build #1441

Open steinerkelvin opened 1 year ago

steinerkelvin commented 1 year ago

Describe the issue

Getting the template with

nix flake init --template github:nix-community/poetry2nix

then running:

nix build

gets me the following error:

error: builder for '/nix/store/bb8867hy0mqwxw2ab2bciygihl4s1wnm-python3.11-app-0.1.0.drv' failed with exit code 1;
       last 10 log lines:
       >                  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >   File "/nix/store/pvfrrm2wba6w76y4qbmmm7l2kmpbszbx-python3.11-poetry-core-1.7.0/lib/python3.11/site-packages/poetry/core/masonry/metadata.py", line 58, in from_package
       >     with readme.open(encoding="utf-8") as f:
       >          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       >   File "/nix/store/qp5zys77biz7imbk6yy85q5pdv7qk84j-python3-3.11.6/lib/python3.11/pathlib.py", line 1044, in open
       >     return io.open(self, mode, buffering, encoding, errors, newline)
       >            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
       > FileNotFoundError: [Errno 2] No such file or directory: '/build/source/README.md'
       >
       > ERROR Backend subprocess exited when trying to invoke build_wheel
       For full logs, run 'nix log /nix/store/bb8867hy0mqwxw2ab2bciygihl4s1wnm-python3.11-app-0.1.0.drv'.

Additional context

flake.nix:

{
  description = "Application packaged using poetry2nix";

  inputs = {
    flake-utils.url = "github:numtide/flake-utils";
    nixpkgs.url = "github:NixOS/nixpkgs/nixos-unstable";
    poetry2nix = {
      url = "github:nix-community/poetry2nix";
      inputs.nixpkgs.follows = "nixpkgs";
    };
  };

  outputs = { self, nixpkgs, flake-utils, poetry2nix }:
    flake-utils.lib.eachDefaultSystem (system:
      let
        # see https://github.com/nix-community/poetry2nix/tree/master#api for more functions and examples.
        pkgs = nixpkgs.legacyPackages.${system};
        inherit (poetry2nix.lib.mkPoetry2Nix { inherit pkgs; }) mkPoetryApplication;
      in
      {
        packages = {
          myapp = mkPoetryApplication { projectDir = self; };
          default = self.packages.${system}.myapp;
        };

        devShells.default = pkgs.mkShell {
          inputsFrom = [ self.packages.${system}.myapp ];
          packages = [ pkgs.poetry ];
        };
      });
}

pyproject.toml:

[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
license = "MIT"
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"

poetry.lock:

[tool.poetry]
name = "app"
version = "0.1.0"
description = ""
authors = ["Your Name <you@example.com>"]
license = "MIT"
readme = "README.md"

[tool.poetry.dependencies]
python = "^3.11"

[build-system]
requires = ["poetry-core"]
build-backend = "poetry.core.masonry.api"
steinerkelvin commented 1 year ago

Ok, just realized that touching a README.md solves it. I guess we should add a README.md to the template.

ches commented 10 months ago

Aside from a README, I have other issues straight out of the box:

$ pushd $(mktemp -d)

$ nix flake init --template github:nix-community/poetry2nix
wrote: /private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/app/__init__.py
wrote: /private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/app
wrote: /private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/pyproject.toml
wrote: /private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/flake.nix
wrote: /private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/poetry.lock

$ nix develop
warning: creating lock file '/private/var/folders/tc/rq67x3pj0l3_8wp74fv_4vl80000gn/T/tmp.1UisMXt6/flake.lock'
error: builder for '/nix/store/6rr9j6abzkk86fvdbvaqq0y0xy7ln7fa-python3.11-poetry-1.7.1.drv' failed with exit code 1;
       last 10 log lines:
       > OK
       > /private/tmp/nix-build-python3.11-poetry-1.7.1.drv-0/source
       > Finished executing pypaBuildPhase
       > buildPhase completed in 36 seconds
       > Running phase: pythonRuntimeDepsCheckHook
       > Executing pythonRuntimeDepsCheck
       > Checking runtime dependencies for poetry-1.7.1-py3-none-any.whl
       >   - fastjsonschema not installed
       >   - platformdirs<4.0.0,>=3.0.0 not satisfied by version 4.0.0
       >   - xattr<0.11.0,>=0.10.0 not satisfied by version 1.0.0
       For full logs, run 'nix log /nix/store/6rr9j6abzkk86fvdbvaqq0y0xy7ln7fa-python3.11-poetry-1.7.1.drv'.
error: 1 dependencies of derivation '/nix/store/6j24d8gdhb8nqm1p2snyqa39qpdjzrkq-nix-shell-env.drv' failed to build
flake.lock ``` { "nodes": { "flake-utils": { "inputs": { "systems": "systems" }, "locked": { "lastModified": 1701680307, "narHash": "sha256-kAuep2h5ajznlPMD9rnQyffWG8EM/C73lejGofXvdM8=", "owner": "numtide", "repo": "flake-utils", "rev": "4022d587cbbfd70fe950c1e2083a02621806a725", "type": "github" }, "original": { "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "flake-utils_2": { "inputs": { "systems": "systems_2" }, "locked": { "lastModified": 1694529238, "narHash": "sha256-zsNZZGTGnMOf9YpHKJqMSsa0dXbfmxeoJ7xHlrt+xmY=", "owner": "numtide", "repo": "flake-utils", "rev": "ff7b65b44d01cf9ba6a71320833626af21126384", "type": "github" }, "original": { "owner": "numtide", "repo": "flake-utils", "type": "github" } }, "nix-github-actions": { "inputs": { "nixpkgs": [ "poetry2nix", "nixpkgs" ] }, "locked": { "lastModified": 1698974481, "narHash": "sha256-yPncV9Ohdz1zPZxYHQf47S8S0VrnhV7nNhCawY46hDA=", "owner": "nix-community", "repo": "nix-github-actions", "rev": "4bb5e752616262457bc7ca5882192a564c0472d2", "type": "github" }, "original": { "owner": "nix-community", "repo": "nix-github-actions", "type": "github" } }, "nixpkgs": { "locked": { "lastModified": 1705133751, "narHash": "sha256-rCIsyE80jgiOU78gCWN3A0wE0tR2GI5nH6MlS+HaaSQ=", "owner": "NixOS", "repo": "nixpkgs", "rev": "9b19f5e77dd906cb52dade0b7bd280339d2a1f3d", "type": "github" }, "original": { "owner": "NixOS", "ref": "nixos-unstable", "repo": "nixpkgs", "type": "github" } }, "poetry2nix": { "inputs": { "flake-utils": "flake-utils_2", "nix-github-actions": "nix-github-actions", "nixpkgs": [ "nixpkgs" ], "systems": "systems_3", "treefmt-nix": "treefmt-nix" }, "locked": { "lastModified": 1705060653, "narHash": "sha256-puYyylgrBS4AFAHeyVRTjTUVD8DZdecJfymWJe7H438=", "owner": "nix-community", "repo": "poetry2nix", "rev": "e0b44e9e2d3aa855d1dd77b06f067cd0e0c3860d", "type": "github" }, "original": { "owner": "nix-community", "repo": "poetry2nix", "type": "github" } }, "root": { "inputs": { "flake-utils": "flake-utils", "nixpkgs": "nixpkgs", "poetry2nix": "poetry2nix" } }, "systems": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default", "type": "github" } }, "systems_2": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "owner": "nix-systems", "repo": "default", "type": "github" } }, "systems_3": { "locked": { "lastModified": 1681028828, "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", "owner": "nix-systems", "repo": "default", "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", "type": "github" }, "original": { "id": "systems", "type": "indirect" } }, "treefmt-nix": { "inputs": { "nixpkgs": [ "poetry2nix", "nixpkgs" ] }, "locked": { "lastModified": 1699786194, "narHash": "sha256-3h3EH1FXQkIeAuzaWB+nK0XK54uSD46pp+dMD3gAcB4=", "owner": "numtide", "repo": "treefmt-nix", "rev": "e82f32aa7f06bbbd56d7b12186d555223dc399d1", "type": "github" }, "original": { "owner": "numtide", "repo": "treefmt-nix", "type": "github" } } }, "root": "root", "version": 7 } ```
ciarandg commented 10 months ago

@ches This obviously isn't a proper fix, but I just ran into this same problem and found that pinning nixpkgs to 23.11 instead of unstable made my devshell build properly

MatrixManAtYrService commented 10 months ago

Note the timestamps, above. First there was activity in November, and then there was three of us here within 12 hours. I think there was a recent change that made this suddenly more relevant. Personally, I'm here because I'm running into the error that @ches has shared above (xattr<0.11.0,>=0.10.0 not satisfied by version 1.0.0)

ches commented 10 months ago

Indeed, the addition of the pythonRuntimeDepsCheck hook was merged to nixpkgs master around Dec. 20th:

https://github.com/NixOS/nixpkgs/commit/8f3162f83fcccf26bf50c55ff960fd2dee5264b2

Not in a stable release yet as of now, hence @ciarandg's observation for pinning stable.

DeeUnderscore commented 10 months ago

The old behavior can be restored by adding dontCheckRuntimeDeps = true to your derivation, disabling the check. This might be indicative of an underlying issue, though, so it's a temporary fix.

More details at NixOS/nixpkgs#250865. This went in with the last staging merge, which was three days ago.

ches commented 10 months ago

FWIW: For Poetry fastjsonschema and platformdirs dep checks now fixed on nixpkgs master:

https://github.com/NixOS/nixpkgs/issues/281034#issuecomment-1891113369

xattr still seems overlooked as a Darwin-specific dependency.

Anyway we can probably conclude that these issues are upstream, and scope this issue back down to the OP's suggestion: include a dummy README.md in the template, or perhaps the problem can be avoided by removing readme = "README.md" from the generated pyproject.toml.

Apologies for the detour.