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
|
*** 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
|
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
|
*** TODO Non-pypi dependencies
|
||||||
Not implemented at all currently
|
Not implemented at all currently
|
||||||
|
|
34
default.nix
34
default.nix
|
@ -12,6 +12,11 @@ let
|
||||||
then builtins.getAttr attribute set
|
then builtins.getAttr attribute set
|
||||||
else default;
|
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; };
|
defaultPoetryOverrides = import ./overrides.nix { inherit pkgs; };
|
||||||
|
|
||||||
mkPoetryPackage = {
|
mkPoetryPackage = {
|
||||||
|
@ -19,9 +24,6 @@ let
|
||||||
pyproject ? src + "/pyproject.toml",
|
pyproject ? src + "/pyproject.toml",
|
||||||
poetrylock ? src + "/poetry.lock",
|
poetrylock ? src + "/poetry.lock",
|
||||||
overrides ? defaultPoetryOverrides,
|
overrides ? defaultPoetryOverrides,
|
||||||
buildInputs ? [ ],
|
|
||||||
checkInputs ? [ ],
|
|
||||||
propagatedBuildInputs ? [ ],
|
|
||||||
...
|
...
|
||||||
}@attrs: let
|
}@attrs: let
|
||||||
pyProject = importTOML pyproject;
|
pyProject = importTOML pyproject;
|
||||||
|
@ -51,12 +53,13 @@ let
|
||||||
src = let
|
src = let
|
||||||
files = getAttrDefault "files" pkgMeta [];
|
files = getAttrDefault "files" pkgMeta [];
|
||||||
files_sdist = builtins.filter (f: f.packagetype == "sdist") files;
|
files_sdist = builtins.filter (f: f.packagetype == "sdist") files;
|
||||||
files_tar = builtins.filter (f: (builtins.match "^.*?tar.gz$" f.name) != null) files_sdist;
|
# Grab the first sdist, we dont care about which one
|
||||||
file = assert builtins.length files_tar == 1; builtins.elemAt files_tar 0;
|
file = assert builtins.length files_sdist >= 1; builtins.elemAt files_sdist 0;
|
||||||
in self.fetchPypi {
|
in self.fetchPypi {
|
||||||
pname = pkgMeta.name;
|
pname = pkgMeta.name;
|
||||||
version = pkgMeta.version;
|
version = pkgMeta.version;
|
||||||
sha256 = file.hash;
|
sha256 = file.hash;
|
||||||
|
extension = getExtension file.name;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -82,27 +85,30 @@ let
|
||||||
|
|
||||||
}).pkgs;
|
}).pkgs;
|
||||||
|
|
||||||
getDeps = deps: let
|
getDeps = depAttr: let
|
||||||
|
deps = builtins.getAttr depAttr pyProject.tool.poetry;
|
||||||
depAttrs = builtins.attrNames deps;
|
depAttrs = builtins.attrNames deps;
|
||||||
in builtins.map (dep: pythonPackages."${dep}") depAttrs;
|
in builtins.map (dep: pythonPackages."${dep}") depAttrs;
|
||||||
|
|
||||||
|
getInputs = attr: getAttrDefault attr attrs [];
|
||||||
|
mkInput = attr: extraInputs: getInputs attr ++ extraInputs;
|
||||||
|
|
||||||
in pythonPackages.buildPythonApplication (passedAttrs // {
|
in pythonPackages.buildPythonApplication (passedAttrs // {
|
||||||
pname = pyProject.tool.poetry.name;
|
pname = pyProject.tool.poetry.name;
|
||||||
version = pyProject.tool.poetry.version;
|
version = pyProject.tool.poetry.version;
|
||||||
|
|
||||||
format = "pyproject";
|
format = "pyproject";
|
||||||
|
|
||||||
buildInputs = [ pythonPackages.poetry ]
|
buildInputs = mkInput "buildInputs" ([ pythonPackages.poetry ]);
|
||||||
++ buildInputs;
|
propagatedBuildInputs = mkInput "propagatedBuildInputs" (getDeps "dependencies");
|
||||||
|
checkInputs = mkInput "checkInputs" (getDeps "dev-dependencies");
|
||||||
|
|
||||||
propagatedBuildInputs = getDeps pyProject.tool.poetry.dependencies
|
passthru = {
|
||||||
++ propagatedBuildInputs;
|
inherit pythonPackages;
|
||||||
|
};
|
||||||
checkInputs = getDeps pyProject.tool.poetry.dev-dependencies
|
|
||||||
++ checkInputs;
|
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description = pyProject.tool.poetry.description;
|
inherit (pyProject.tool.poetry) description;
|
||||||
licenses = [ pyProject.tool.poetry.license ];
|
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;
|
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: {
|
lockfile = self: super: drv: drv.overrideAttrs(old: {
|
||||||
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.pbr ];
|
propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.pbr ];
|
||||||
});
|
});
|
||||||
|
|
Loading…
Add table
Reference in a new issue