Add setupcfg2nix and supporting infrastructure
This commit is contained in:
parent
9b8668c79c
commit
0901b3e195
23
pkgs/build-support/build-setupcfg/default.nix
Normal file
23
pkgs/build-support/build-setupcfg/default.nix
Normal file
|
@ -0,0 +1,23 @@
|
|||
# Build a python package from info made available by setupcfg2nix.
|
||||
#
|
||||
# * src: The source of the package.
|
||||
# * info: The package information generated by setupcfg2nix.
|
||||
# * meta: Standard nixpkgs metadata.
|
||||
# * application: Whether this package is a python library or an
|
||||
# application which happens to be written in python.
|
||||
pythonPackages: { src, info, meta ? {}, application ? false }: let
|
||||
build = if application
|
||||
then pythonPackages.buildPythonApplication
|
||||
else pythonPackages.buildPythonPackage;
|
||||
in build {
|
||||
inherit (info) pname version;
|
||||
|
||||
inherit src meta;
|
||||
|
||||
nativeBuildInputs = map (p: pythonPackages.${p}) (
|
||||
(info.setup_requires or []) ++
|
||||
(info.tests_require or []));
|
||||
|
||||
propagatedBuildInputs = map (p: pythonPackages.${p})
|
||||
(info.install_requires or []);
|
||||
}
|
19
pkgs/development/tools/setupcfg2nix/default.nix
Normal file
19
pkgs/development/tools/setupcfg2nix/default.nix
Normal file
|
@ -0,0 +1,19 @@
|
|||
{ buildSetupcfg, fetchFromGitHub, lib }:
|
||||
|
||||
buildSetupcfg rec {
|
||||
info = import ./info.nix;
|
||||
src = fetchFromGitHub {
|
||||
owner = "target";
|
||||
repo = "setupcfg2nix";
|
||||
rev = info.version;
|
||||
sha256 = "1zn9njpzwhwikrirgjlyz6ys3xr8gq61ry8blmnpscqvhsdhxcs6";
|
||||
};
|
||||
application = true;
|
||||
meta = {
|
||||
description = "Generate nix expressions from setup.cfg for a python package.";
|
||||
homepage = https://github.com/target/setupcfg2nix;
|
||||
license = lib.licenses.mit;
|
||||
platforms = lib.platforms.all;
|
||||
maintainers = [ lib.maintainers.shlevy ];
|
||||
};
|
||||
}
|
7
pkgs/development/tools/setupcfg2nix/info.nix
Normal file
7
pkgs/development/tools/setupcfg2nix/info.nix
Normal file
|
@ -0,0 +1,7 @@
|
|||
{
|
||||
pname = ''setupcfg2nix'';
|
||||
version = ''1.1.0'';
|
||||
install_requires = [
|
||||
''setuptools''
|
||||
];
|
||||
}
|
|
@ -7230,6 +7230,8 @@ with pkgs;
|
|||
pythonPackages = python3Packages;
|
||||
};
|
||||
|
||||
setupcfg2nix = python3Packages.callPackage ../development/tools/setupcfg2nix {};
|
||||
|
||||
# These pyside tools do not provide any Python modules and are meant to be here.
|
||||
# See ../development/python-modules/pyside/default.nix for details.
|
||||
pysideApiextractor = callPackage ../development/python-modules/pyside/apiextractor.nix { };
|
||||
|
|
|
@ -66,6 +66,9 @@ let
|
|||
toPythonModule = x: x; # Application does not provide modules.
|
||||
}));
|
||||
|
||||
# See build-setupcfg/default.nix for documentation.
|
||||
buildSetupcfg = import ../build-support/build-setupcfg self;
|
||||
|
||||
graphiteVersion = "1.0.2";
|
||||
|
||||
fetchPypi = makeOverridable( {format ? "setuptools", ... } @attrs:
|
||||
|
@ -133,6 +136,7 @@ in {
|
|||
inherit fetchPypi callPackage;
|
||||
inherit hasPythonModule requiredPythonModules makePythonPath disabledIf;
|
||||
inherit toPythonModule toPythonApplication;
|
||||
inherit buildSetupcfg;
|
||||
|
||||
# helpers
|
||||
|
||||
|
|
Loading…
Reference in a new issue