Files
nixpkgs/pkgs/development/python-modules/setuptools/default.nix
T

84 lines
2.2 KiB
Nix
Raw Normal View History

2017-06-01 18:21:23 +02:00
{ stdenv
2019-07-17 20:36:47 +02:00
, buildPythonPackage
, fetchFromGitHub
2017-06-01 18:21:23 +02:00
, python
, wrapPython
, unzip
2019-07-17 20:36:47 +02:00
, callPackage
, bootstrapped-pip
, lib
, pipInstallHook
, setuptoolsBuildHook
2017-06-01 18:21:23 +02:00
}:
let
2016-11-14 21:58:43 +01:00
pname = "setuptools";
version = "50.3.1";
# Create an sdist of setuptools
sdist = stdenv.mkDerivation rec {
name = "${pname}-${version}-sdist.tar.gz";
src = fetchFromGitHub {
owner = "pypa";
repo = pname;
rev = "v${version}";
sha256 = "Z4KHB3Pv4wZPou/Vbp1DFDgDp47OTDfVChGP55GtIJE=";
name = "${pname}-${version}-source";
};
patches = [
./tag-date.patch
];
buildPhase = ''
${python.pythonForBuild.interpreter} bootstrap.py
${python.pythonForBuild.interpreter} setup.py sdist --formats=gztar
# Here we untar the sdist and retar it in order to control the timestamps
# of all the files included
tar -xzf dist/${pname}-${version}.post0.tar.gz -C dist/
2020-12-02 11:11:28 +01:00
tar -czf dist/${name} -C dist/ --mtime="@$SOURCE_DATE_EPOCH" --sort=name ${pname}-${version}.post0
'';
installPhase = ''
echo "Moving sdist..."
mv dist/${name} $out
'';
};
in buildPythonPackage rec {
inherit pname version;
# Because of bootstrapping we don't use the setuptoolsBuildHook that comes with format="setuptools" directly.
# Instead, we override it to remove setuptools to avoid a circular dependency.
# The same is done for pip and the pipInstallHook.
2019-07-17 20:36:47 +02:00
format = "other";
2012-12-03 05:20:04 +01:00
src = sdist;
nativeBuildInputs = [
bootstrapped-pip
(pipInstallHook.override{pip=null;})
(setuptoolsBuildHook.override{setuptools=null; wheel=null;})
];
2019-07-17 20:36:47 +02:00
preBuild = lib.strings.optionalString (!stdenv.hostPlatform.isWindows) ''
export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
2013-07-27 20:51:54 +02:00
'';
pipInstallFlags = [ "--ignore-installed" ];
2019-07-17 20:36:47 +02:00
# Adds setuptools to nativeBuildInputs causing infinite recursion.
catchConflicts = false;
2019-01-02 20:09:44 +01:00
2019-07-17 20:36:47 +02:00
# Requires pytest, causing infinite recursion.
doCheck = false;
2019-01-02 20:09:44 +01:00
meta = with lib; {
description = "Utilities to facilitate the installation of Python packages";
homepage = "https://pypi.python.org/pypi/setuptools";
2017-08-06 13:49:18 +02:00
license = with licenses; [ psfl zpl20 ];
2018-06-12 20:56:11 +02:00
platforms = python.meta.platforms;
2016-08-02 12:17:37 +02:00
priority = 10;
2015-08-27 18:45:48 +02:00
};
}