aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix83
1 files changed, 83 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix b/infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
new file mode 100644
index 000000000000..f30e8dd5cdb3
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/development/python-modules/setuptools/default.nix
@@ -0,0 +1,83 @@
+{ stdenv
+, buildPythonPackage
+, fetchFromGitHub
+, python
+, wrapPython
+, unzip
+, callPackage
+, bootstrapped-pip
+, lib
+, pipInstallHook
+, setuptoolsBuildHook
+}:
+
+let
+ 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/
+ tar -czf dist/${name} -C dist/ --mtime="@$SOURCE_DATE_EPOCH" ${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.
+ format = "other";
+
+ src = sdist;
+
+ nativeBuildInputs = [
+ bootstrapped-pip
+ (pipInstallHook.override{pip=null;})
+ (setuptoolsBuildHook.override{setuptools=null; wheel=null;})
+ ];
+
+ preBuild = lib.strings.optionalString (!stdenv.hostPlatform.isWindows) ''
+ export SETUPTOOLS_INSTALL_WINDOWS_SPECIFIC_FILES=0
+ '';
+
+ pipInstallFlags = [ "--ignore-installed" ];
+
+ # Adds setuptools to nativeBuildInputs causing infinite recursion.
+ catchConflicts = false;
+
+ # Requires pytest, causing infinite recursion.
+ doCheck = false;
+
+ meta = with stdenv.lib; {
+ description = "Utilities to facilitate the installation of Python packages";
+ homepage = "https://pypi.python.org/pypi/setuptools";
+ license = with licenses; [ psfl zpl20 ];
+ platforms = python.meta.platforms;
+ priority = 10;
+ };
+}