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:
Frederik Rietdijk 2019-11-21 10:48:43 +01:00 committed by adisbladis
parent 3f576471a2
commit cb67c624e5
No known key found for this signature in database
GPG key ID: 110BFAD44C6249B7
2 changed files with 22 additions and 69 deletions

View file

@ -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

View file

@ -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";
}