mirror of
https://github.com/vale981/poetry2nix
synced 2025-03-04 08:41:42 -05:00
Properly fetch sdists with extension
This commit is contained in:
parent
b4abe49e04
commit
e0e2a3f659
6 changed files with 73 additions and 14 deletions
9
Makefile
Normal file
9
Makefile
Normal file
|
@ -0,0 +1,9 @@
|
|||
.PHONY: all generate
|
||||
|
||||
all: generate test
|
||||
|
||||
generate:
|
||||
./generate.py
|
||||
|
||||
test:
|
||||
nix-shell -p python3Packages.flake8 --run 'flake8 ./*.py'
|
|
@ -8,6 +8,7 @@ Need to filter out certain deps like enum34
|
|||
|
||||
*** TODO Lock file hashes not distinguishable by origin
|
||||
Reported upstream at https://github.com/sdispater/poetry/issues/1172 and fixed in https://github.com/sdispater/poetry/pull/1183
|
||||
This branch depends on upstream PR #1183.
|
||||
|
||||
*** TODO Non-pypi dependencies
|
||||
Not implemented at all currently
|
||||
|
|
34
default.nix
34
default.nix
|
@ -12,6 +12,11 @@ let
|
|||
then builtins.getAttr attribute set
|
||||
else default;
|
||||
|
||||
extensions = pkgs.lib.importJSON ./extensions.json;
|
||||
getExtension = filename: builtins.elemAt
|
||||
(builtins.filter (ext: builtins.match "^.*\.${ext}" filename != null) extensions)
|
||||
0;
|
||||
|
||||
defaultPoetryOverrides = import ./overrides.nix { inherit pkgs; };
|
||||
|
||||
mkPoetryPackage = {
|
||||
|
@ -19,9 +24,6 @@ let
|
|||
pyproject ? src + "/pyproject.toml",
|
||||
poetrylock ? src + "/poetry.lock",
|
||||
overrides ? defaultPoetryOverrides,
|
||||
buildInputs ? [ ],
|
||||
checkInputs ? [ ],
|
||||
propagatedBuildInputs ? [ ],
|
||||
...
|
||||
}@attrs: let
|
||||
pyProject = importTOML pyproject;
|
||||
|
@ -51,12 +53,13 @@ let
|
|||
src = let
|
||||
files = getAttrDefault "files" pkgMeta [];
|
||||
files_sdist = builtins.filter (f: f.packagetype == "sdist") files;
|
||||
files_tar = builtins.filter (f: (builtins.match "^.*?tar.gz$" f.name) != null) files_sdist;
|
||||
file = assert builtins.length files_tar == 1; builtins.elemAt files_tar 0;
|
||||
# Grab the first sdist, we dont care about which one
|
||||
file = assert builtins.length files_sdist >= 1; builtins.elemAt files_sdist 0;
|
||||
in self.fetchPypi {
|
||||
pname = pkgMeta.name;
|
||||
version = pkgMeta.version;
|
||||
sha256 = file.hash;
|
||||
extension = getExtension file.name;
|
||||
};
|
||||
};
|
||||
|
||||
|
@ -82,27 +85,30 @@ let
|
|||
|
||||
}).pkgs;
|
||||
|
||||
getDeps = deps: let
|
||||
getDeps = depAttr: let
|
||||
deps = builtins.getAttr depAttr pyProject.tool.poetry;
|
||||
depAttrs = builtins.attrNames deps;
|
||||
in builtins.map (dep: pythonPackages."${dep}") depAttrs;
|
||||
|
||||
getInputs = attr: getAttrDefault attr attrs [];
|
||||
mkInput = attr: extraInputs: getInputs attr ++ extraInputs;
|
||||
|
||||
in pythonPackages.buildPythonApplication (passedAttrs // {
|
||||
pname = pyProject.tool.poetry.name;
|
||||
version = pyProject.tool.poetry.version;
|
||||
|
||||
format = "pyproject";
|
||||
|
||||
buildInputs = [ pythonPackages.poetry ]
|
||||
++ buildInputs;
|
||||
buildInputs = mkInput "buildInputs" ([ pythonPackages.poetry ]);
|
||||
propagatedBuildInputs = mkInput "propagatedBuildInputs" (getDeps "dependencies");
|
||||
checkInputs = mkInput "checkInputs" (getDeps "dev-dependencies");
|
||||
|
||||
propagatedBuildInputs = getDeps pyProject.tool.poetry.dependencies
|
||||
++ propagatedBuildInputs;
|
||||
|
||||
checkInputs = getDeps pyProject.tool.poetry.dev-dependencies
|
||||
++ checkInputs;
|
||||
passthru = {
|
||||
inherit pythonPackages;
|
||||
};
|
||||
|
||||
meta = {
|
||||
description = pyProject.tool.poetry.description;
|
||||
inherit (pyProject.tool.poetry) description;
|
||||
licenses = [ pyProject.tool.poetry.license ];
|
||||
};
|
||||
|
||||
|
|
14
extensions.json
Normal file
14
extensions.json
Normal file
|
@ -0,0 +1,14 @@
|
|||
[
|
||||
"tar",
|
||||
"tar.bz2",
|
||||
"tar.gz",
|
||||
"tar.lz",
|
||||
"tar.lzma",
|
||||
"tar.xz",
|
||||
"tbz",
|
||||
"tgz",
|
||||
"tlz",
|
||||
"txz",
|
||||
"whl",
|
||||
"zip"
|
||||
]
|
14
generate.py
Executable file
14
generate.py
Executable file
|
@ -0,0 +1,14 @@
|
|||
#!/usr/bin/env nix-shell
|
||||
#! nix-shell -i python3 -p python3Packages.poetry
|
||||
|
||||
# Run code generation used by poetry2nix
|
||||
|
||||
from poetry.packages.utils.utils import SUPPORTED_EXTENSIONS
|
||||
import json
|
||||
|
||||
EXT_FILE = 'extensions.json'
|
||||
|
||||
if __name__ == '__main__':
|
||||
with open(EXT_FILE, 'w') as f:
|
||||
ext = sorted(ext.lstrip('.') for ext in SUPPORTED_EXTENSIONS)
|
||||
f.write(json.dumps(ext, indent=2))
|
|
@ -38,6 +38,21 @@ in {
|
|||
|
||||
jsonschema = addSetupTools;
|
||||
|
||||
python-dateutil = addSetupTools;
|
||||
|
||||
numpy = self: super: drv: drv.overrideAttrs(old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.gfortran ];
|
||||
buildInputs = old.buildInputs ++ [ pkgs.openblasCompat ];
|
||||
|
||||
# inherit (super.numpy) preConfigure preBuild enableParallelBuilding;
|
||||
});
|
||||
|
||||
shapely = self: super: drv: drv.overrideAttrs(old: {
|
||||
buildInputs = old.buildInputs ++ [ pkgs.geos self.cython ];
|
||||
|
||||
inherit (super.shapely) patches GEOS_LIBRARY_PATH;
|
||||
});
|
||||
|
||||
lockfile = self: super: drv: drv.overrideAttrs(old: {
|
||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.pbr ];
|
||||
});
|
||||
|
|
Loading…
Add table
Reference in a new issue