mirror of
https://github.com/vale981/poetry2nix
synced 2025-03-04 16:51:40 -05:00
simplify fetchPypi, remove need for overrides
We already have the name of the file that we need, so let's fetch it directly instead of breaking it apart first, passing it to the Nixpkgs fetchPypi, which would then put it together again.
This commit is contained in:
parent
3f576471a2
commit
cb67c624e5
2 changed files with 22 additions and 69 deletions
31
default.nix
31
default.nix
|
@ -14,6 +14,18 @@ let
|
|||
else default
|
||||
);
|
||||
|
||||
# Fetch the artifacts from the PyPI index.
|
||||
#
|
||||
# Args:
|
||||
# file: filename including extension
|
||||
# hash: SRI hash
|
||||
# kind: Language implementation and version tag https://www.python.org/dev/peps/pep-0427/#file-name-convention
|
||||
fetchPypi = lib.makeOverridable ({ pname, file, hash, kind }:
|
||||
pkgs.fetchurl {
|
||||
url = "https://files.pythonhosted.org/packages/${kind}/${builtins.substring 0 1 file}/${pname}/${file}";
|
||||
inherit hash;
|
||||
});
|
||||
|
||||
getAttrPath = attrPath: set: (
|
||||
builtins.foldl'
|
||||
(acc: v: if builtins.typeOf acc == "set" && builtins.hasAttr v acc then acc."${v}" else null)
|
||||
|
@ -126,21 +138,14 @@ let
|
|||
broken = ! isCompatible python.version pkgMeta.python-versions;
|
||||
};
|
||||
|
||||
src =
|
||||
if format == "wheel"
|
||||
then self.fetchPypi {
|
||||
src = fetchPypi {
|
||||
pname = pkgMeta.name;
|
||||
version = pkgMeta.version;
|
||||
sha256 = file.hash;
|
||||
format = "wheel";
|
||||
}
|
||||
else self.fetchPypi {
|
||||
pname = pkgMeta.name;
|
||||
version = pkgMeta.version;
|
||||
sha256 = file.hash;
|
||||
extension = getExtension file.file;
|
||||
inherit (file) file hash;
|
||||
# We need to retrieve kind from the interpreter and the filename of the package
|
||||
# Interpreters should declare what wheel types they're compatible with (python type + ABI)
|
||||
# Here we can then choose a file based on that info.
|
||||
kind = if format == "wheel" then "py2.py3" else "source";
|
||||
};
|
||||
|
||||
};
|
||||
|
||||
# Filter packages by their PEP508 markers
|
||||
|
|
|
@ -11,23 +11,6 @@ let
|
|||
];
|
||||
});
|
||||
|
||||
renameLiteral = pname: (self: super: drv: drv.overrideAttrs(old: {
|
||||
src = old.src.override { inherit pname; };
|
||||
}));
|
||||
|
||||
renameUnderscore = self: super: drv: drv.overrideAttrs(old: {
|
||||
src = old.src.override { pname = builtins.replaceStrings ["-"] ["_"] old.pname; };
|
||||
});
|
||||
|
||||
renameCapital = let
|
||||
capitalise = s: let
|
||||
len = builtins.stringLength s;
|
||||
first = lib.toUpper (builtins.substring 0 1 s);
|
||||
in first + builtins.substring 1 len s;
|
||||
in self: super: drv: drv.overrideAttrs(old: {
|
||||
src = old.src.override { pname = capitalise old.pname; };
|
||||
});
|
||||
|
||||
# Chain multiple overrides into a single one
|
||||
composeOverrides = overrides:
|
||||
(self: super: drv: builtins.foldl' (drv: override: override self super drv) drv overrides);
|
||||
|
@ -39,8 +22,6 @@ let
|
|||
|
||||
in {
|
||||
|
||||
babel = renameCapital;
|
||||
|
||||
django-bakery = self: super: drv: drv.overrideAttrs(old: {
|
||||
configurePhase = ''
|
||||
if ! test -e LICENSE; then
|
||||
|
@ -49,20 +30,13 @@ in {
|
|||
'' + (getAttrDefault "configurePhase" old "");
|
||||
});
|
||||
|
||||
vat-moss = renameUnderscore;
|
||||
|
||||
django = composeOverrides [
|
||||
renameCapital
|
||||
(self: super: drv: drv.overrideAttrs(old: {
|
||||
propagatedNativeBuildInputs = (getAttrDefault "propagatedNativeBuildInputs" old [])
|
||||
++ [ pkgs.gettext ];
|
||||
}))
|
||||
];
|
||||
|
||||
cachecontrol = renameLiteral "CacheControl";
|
||||
|
||||
click = renameCapital;
|
||||
|
||||
cffi = self: super: drv: drv.overrideAttrs(old: {
|
||||
buildInputs = old.buildInputs ++ [ pkgs.libffi ];
|
||||
});
|
||||
|
@ -75,20 +49,10 @@ in {
|
|||
buildInputs = old.buildInputs ++ [ pkgs.openssl ];
|
||||
});
|
||||
|
||||
django-compressor = renameUnderscore;
|
||||
|
||||
django-csp = renameUnderscore;
|
||||
|
||||
django-context-decorator = renameUnderscore;
|
||||
|
||||
markdown = renameCapital;
|
||||
|
||||
markupsafe = self: super: drv: drv.overrideAttrs(old: {
|
||||
src = old.src.override { pname = builtins.replaceStrings [ "markupsafe" ] [ "MarkupSafe"] old.pname; };
|
||||
});
|
||||
|
||||
pyyaml = renameLiteral "PyYAML";
|
||||
|
||||
hypothesis = addSetupTools;
|
||||
|
||||
pillow = let
|
||||
|
@ -98,14 +62,10 @@ in {
|
|||
buildInputs = with pkgs; [ freetype libjpeg zlib libtiff libwebp tcl lcms2 ]
|
||||
++ old.buildInputs;
|
||||
});
|
||||
in composeOverrides [ renameCapital pillowOverride ];
|
||||
in pillowOverride;
|
||||
|
||||
pytest = addSetupTools;
|
||||
|
||||
pyopenssl = renameLiteral "pyOpenSSL";
|
||||
|
||||
pypdf2 = renameLiteral "PyPDF2";
|
||||
|
||||
pytest-mock = addSetupTools;
|
||||
|
||||
six = addSetupTools;
|
||||
|
@ -114,24 +74,14 @@ in {
|
|||
|
||||
zipp = addSetupTools;
|
||||
|
||||
importlib-metadata = composeOverrides [ renameUnderscore addSetupTools ];
|
||||
|
||||
importlib-resources = composeOverrides [ renameUnderscore ];
|
||||
|
||||
typing-extensions = renameUnderscore;
|
||||
importlib-metadata = addSetupTools;
|
||||
|
||||
pluggy = addSetupTools;
|
||||
|
||||
pre-commit = renameUnderscore;
|
||||
|
||||
jsonschema = addSetupTools;
|
||||
|
||||
jinja2 = renameCapital;
|
||||
|
||||
python-dateutil = addSetupTools;
|
||||
|
||||
pygments = renameCapital;
|
||||
|
||||
numpy = self: super: drv: drv.overrideAttrs(old: {
|
||||
nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.gfortran ];
|
||||
buildInputs = old.buildInputs ++ [ pkgs.openblasCompat ];
|
||||
|
@ -157,6 +107,4 @@ in {
|
|||
|
||||
keyring = addSetupTools;
|
||||
|
||||
secretstorage = renameLiteral "SecretStorage";
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue