diff options
author | Alyssa Ross <hi@alyssa.is> | 2023-11-21 16:12:21 +0100 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2023-11-21 16:12:48 +0100 |
commit | 048a4cd441a59cbf89defb18bb45c9f0b4429b35 (patch) | |
tree | f8f5850ff05521ab82d65745894714a8796cbfb6 /pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix | |
parent | 030c5028b07afcedce7c5956015c629486cc79d9 (diff) | |
parent | 4c2d05dd6435d449a3651a6dd314d9411b5f8146 (diff) | |
download | nixpkgs-rootfs.tar nixpkgs-rootfs.tar.gz nixpkgs-rootfs.tar.bz2 nixpkgs-rootfs.tar.lz nixpkgs-rootfs.tar.xz nixpkgs-rootfs.tar.zst nixpkgs-rootfs.zip |
Signed-off-by: Alyssa Ross <hi@alyssa.is>
Diffstat (limited to 'pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix')
-rw-r--r-- | pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix | 3026 |
1 files changed, 0 insertions, 3026 deletions
diff --git a/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix b/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix deleted file mode 100644 index d96d920c709..00000000000 --- a/pkgs/development/tools/poetry2nix/poetry2nix/overrides/default.nix +++ /dev/null @@ -1,3026 +0,0 @@ -{ pkgs ? import <nixpkgs> { } -, lib ? pkgs.lib -}: - -let - addBuildSystem = - { self - , drv - , attr - , extraAttrs ? [ ] - }: - let - buildSystem = - if builtins.isAttrs attr then - let - fromIsValid = - if builtins.hasAttr "from" attr then - lib.versionAtLeast drv.version attr.from - else - true; - untilIsValid = - if builtins.hasAttr "until" attr then - lib.versionOlder drv.version attr.until - else - true; - intendedBuildSystem = - if attr.buildSystem == "cython" then - self.python.pythonForBuild.pkgs.cython - else - self.${attr.buildSystem}; - in - if fromIsValid && untilIsValid then intendedBuildSystem else null - else - if attr == "cython" then self.python.pythonForBuild.pkgs.cython else self.${attr}; - in - ( - # Flit only works on Python3 - if (attr == "flit-core" || attr == "flit" || attr == "hatchling") && !self.isPy3k then drv - else if drv == null then null - else if drv ? overridePythonAttrs == false then drv - else - drv.overridePythonAttrs ( - old: - # We do not need the build system for wheels. - if old ? format && old.format == "wheel" then - { } - else - { - nativeBuildInputs = - (old.nativeBuildInputs or [ ]) - ++ lib.optionals (!(builtins.isNull buildSystem)) [ buildSystem ] - ++ map (a: self.${a}) extraAttrs; - } - ) - ); - - -in -lib.composeManyExtensions [ - # NixOps - (self: super: - lib.mapAttrs (_: v: addBuildSystem { inherit self; drv = v; attr = "poetry"; }) (lib.filterAttrs (n: _: lib.strings.hasPrefix "nixops" n) super) - // { - # NixOps >=2 dependency - nixos-modules-contrib = addBuildSystem { inherit self; drv = super.nixos-modules-contrib; attr = "poetry"; }; - } - ) - - # Add build systems - (self: super: - let - buildSystems = lib.importJSON ./build-systems.json; - in - lib.mapAttrs - (attr: systems: builtins.foldl' - (drv: attr: addBuildSystem { - inherit drv self attr; - }) - (super.${attr} or null) - systems) - buildSystems) - - # Build fixes - (self: super: - let - inherit (self.python) stdenv; - inherit (pkgs.buildPackages) pkg-config; - pyBuildPackages = self.python.pythonForBuild.pkgs; - - selectQt5 = version: - let - selector = builtins.concatStringsSep "" (lib.take 2 (builtins.splitVersion version)); - in - pkgs."qt${selector}" or pkgs.qt5; - - in - - { - automat = super.automat.overridePythonAttrs ( - old: lib.optionalAttrs (lib.versionOlder old.version "22.10.0") { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.m2r ]; - } - ); - - aiohttp-swagger3 = super.aiohttp-swagger3.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - ansible = super.ansible.overridePythonAttrs ( - old: { - # Inputs copied from nixpkgs as ansible doesn't specify it's dependencies - # in a correct manner. - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.pycrypto - self.paramiko - self.jinja2 - self.pyyaml - self.httplib2 - self.six - self.netaddr - self.dnspython - self.jmespath - self.dopy - self.ncclient - ]; - } - ); - - ansible-base = super.ansible-base.overridePythonAttrs ( - old: - { - prePatch = ''sed -i "s/\[python, /[/" lib/ansible/executor/task_executor.py''; - postInstall = '' - for m in docs/man/man1/*; do - install -vD $m -t $out/share/man/man1 - done - ''; - } - // lib.optionalAttrs (lib.versionOlder old.version "2.4") { - prePatch = ''sed -i "s,/usr/,$out," lib/ansible/constants.py''; - } - ); - - ansible-lint = super.ansible-lint.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools-scm-git-archive ]; - preBuild = '' - export HOME=$(mktemp -d) - ''; - } - ); - - argcomplete = super.argcomplete.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.importlib-metadata ]; - } - ); - - arpeggio = super.arpeggio.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - astroid = super.astroid.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - av = super.av.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkg-config - ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.ffmpeg_4 ]; - } - ); - - argon2-cffi = - if (lib.versionAtLeast super.argon2-cffi.version "21.2.0") then - addBuildSystem - { - inherit self; - drv = super.argon2-cffi; - attr = "flit-core"; - } else super.argon2-cffi; - - awscrt = super.awscrt.overridePythonAttrs ( - old: { - nativeBuildInputs = [ pkgs.cmake ] ++ old.nativeBuildInputs; - dontUseCmakeConfigure = true; - } - ); - bcrypt = - let - getCargoHash = version: { - "4.0.0" = "sha256-HvfRLyUhlXVuvxWrtSDKx3rMKJbjvuiMcDY6g+pYFS0="; - "4.0.1" = "sha256-lDWX69YENZFMu7pyBmavUZaalGvFqbHSHfkwkzmDQaY="; - }.${version} or ( - lib.warn "Unknown bcrypt version: '${version}'. Please update getCargoHash." lib.fakeHash - ); - in - super.bcrypt.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) - ++ [ pkgs.libffi ] - ++ lib.optionals (lib.versionAtLeast old.version "4" && stdenv.isDarwin) - [ pkgs.darwin.apple_sdk.frameworks.Security pkgs.libiconv ]; - nativeBuildInputs = with pkgs; - (old.nativeBuildInputs or [ ]) - ++ lib.optionals (lib.versionAtLeast old.version "4") [ rustc cargo pkgs.rustPlatform.cargoSetupHook self.setuptools-rust ]; - } // lib.optionalAttrs (lib.versionAtLeast old.version "4") { - cargoDeps = - pkgs.rustPlatform.fetchCargoTarball - { - src = old.src; - sourceRoot = "${old.pname}-${old.version}/src/_bcrypt"; - name = "${old.pname}-${old.version}"; - sha256 = getCargoHash old.version; - }; - cargoRoot = "src/_bcrypt"; - } - ); - bjoern = super.bjoern.overridePythonAttrs ( - old: { - buildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.libev ]; - } - ); - - borgbackup = super.borgbackup.overridePythonAttrs ( - old: { - BORG_OPENSSL_PREFIX = pkgs.openssl.dev; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.openssl pkgs.acl ]; - } - ); - - cairocffi = super.cairocffi.overridePythonAttrs ( - old: { - inherit (pkgs.python3.pkgs.cairocffi) patches; - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - cairosvg = super.cairosvg.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - cattrs = - let - drv = super.cattrs; - in - if drv.version == "1.10.0" then - drv.overridePythonAttrs - (old: { - # 1.10.0 contains a pyproject.toml that requires a pre-release Poetry - # We can avoid using Poetry and use the generated setup.py - preConfigure = old.preConfigure or "" + '' - rm pyproject.toml - ''; - }) else drv; - - ccxt = super.ccxt.overridePythonAttrs (old: { - preBuild = '' - ln -s README.{rst,md} - ''; - }); - - celery = super.celery.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - cerberus = super.cerberus.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - cssselect2 = super.cssselect2.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - cffi = - # cffi is bundled with pypy - if self.python.implementation == "pypy" then null else - ( - super.cffi.overridePythonAttrs ( - old: { - nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ pkg-config ]; - buildInputs = old.buildInputs or [ ] ++ [ pkgs.libffi ]; - prePatch = (old.prePatch or "") + lib.optionalString (!(old.src.isWheel or false) && stdenv.isDarwin) '' - # Remove setup.py impurities - substituteInPlace setup.py --replace "'-iwithsysroot/usr/include/ffi'" "" - substituteInPlace setup.py --replace "'/usr/include/ffi'," "" - substituteInPlace setup.py --replace '/usr/include/libffi' '${lib.getDev pkgs.libffi}/include' - ''; - - } - ) - ); - - cmdstanpy = super.cmdstanpy.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.cmdstan ]; - patchPhase = '' - substituteInPlace cmdstanpy/model.py \ - --replace 'cmd = [make]' \ - 'cmd = ["${pkgs.cmdstan}/bin/stan"]' - ''; - CMDSTAN = "${pkgs.cmdstan}"; - } - ); - - contourpy = super.contourpy.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pybind11 ]; - } - ); - - cloudflare = super.cloudflare.overridePythonAttrs ( - old: { - postPatch = '' - rm -rf examples/* - ''; - } - ); - - colour = super.colour.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.d2to1 ]; - } - ); - - coincurve = super.coincurve.overridePythonAttrs ( - old: { - # package setup logic - LIB_DIR = "${lib.getLib pkgs.secp256k1}/lib"; - - # for actual C toolchain build - NIX_CFLAGS_COMPILE = "-I ${lib.getDev pkgs.secp256k1}/include"; - NIX_LDFLAGS = "-L ${lib.getLib pkgs.secp256k1}/lib"; - } - ); - - configparser = super.configparser.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - confluent-kafka = super.confluent-kafka.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.rdkafka - ]; - } - ); - - copier = super.copier.overrideAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.git ]; - }); - - cryptography = - let - getCargoHash = version: { - "35.0.0" = "sha256-tQoQfo+TAoqAea86YFxyj/LNQCiViu5ij/3wj7ZnYLI="; - "36.0.0" = "sha256-Y6TuW7AryVgSvZ6G8WNoDIvi+0tvx8ZlEYF5qB0jfNk="; - "36.0.1" = "sha256-kozYXkqt1Wpqyo9GYCwN08J+zV92ZWFJY/f+rulxmeQ="; - "36.0.2" = "1a0ni1a3dbv2dvh6gx2i54z8v5j9m6asqg97kkv7gqb1ivihsbp8"; - "37.0.2" = "sha256-qvrxvneoBXjP96AnUPyrtfmCnZo+IriHR5HbtWQ5Gk8="; - "37.0.4" = "sha256-f8r6QclTwkgK20CNe9i65ZOqvSUeDc4Emv6BFBhh1hI"; - "38.0.1" = "sha256-o8l13fnfEUvUdDasq3LxSPArozRHKVsZfQg9DNR6M6Q="; - "38.0.3" = "sha256-lzHLW1N4hZj+nn08NZiPVM/X+SEcIsuZDjEOy0OOkSc="; - "38.0.4" = "sha256-BN0kOblUwgHj5QBf52RY2Jx0nBn03lwoN1O5PEohbwY="; - "39.0.0" = "sha256-clorC0NtGukpE3DnZ84MSdGhJN+qC89DZPITZFuL01Q="; - "39.0.2" = "sha256-Admz48/GS2t8diz611Ciin1HKQEyMDEwHxTpJ5tZ1ZA="; - "40.0.0" = "sha256-/TBANavYria9YrBpMgjtFyqg5feBcloETcYJ8fdBgkI="; - "40.0.1" = "sha256-gFfDTc2QWBWHBCycVH1dYlCsWQMVcRZfOBIau+njtDU="; - "40.0.2" = "sha256-cV4GTfbVYanElXOVmynvrru2wJuWvnT1Z1tQKXdkbg0="; - "41.0.1" = "sha256-38q81vRf8QHR8lFRM2KbH7Ng5nY7nmtWRMoPWS9VO/U="; - }.${version} or ( - lib.warn "Unknown cryptography version: '${version}'. Please update getCargoHash." lib.fakeHash - ); - sha256 = getCargoHash super.cryptography.version; - isWheel = lib.hasSuffix ".whl" super.cryptography.src; - scrypto = - if isWheel then - ( - super.cryptography.overridePythonAttrs { preferWheel = true; } - ) else super.cryptography; - in - scrypto.overridePythonAttrs - ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) - ++ lib.optionals (lib.versionAtLeast old.version "3.4") [ self.setuptools-rust ] - ++ lib.optional (!self.isPyPy) pyBuildPackages.cffi - ++ lib.optional (lib.versionAtLeast old.version "3.5" && !isWheel) [ pkgs.rustPlatform.cargoSetupHook pkgs.cargo pkgs.rustc ] - ++ [ pkg-config ] - ; - buildInputs = (old.buildInputs or [ ]) - ++ [ pkgs.libxcrypt ] - ++ [ (if lib.versionAtLeast old.version "37" then pkgs.openssl_3 else pkgs.openssl_1_1) ] - ++ lib.optionals stdenv.isDarwin [ pkgs.darwin.apple_sdk.frameworks.Security pkgs.libiconv ]; - propagatedBuildInputs = old.propagatedBuildInputs or [ ] ++ [ self.cffi ]; - } // lib.optionalAttrs (lib.versionAtLeast old.version "3.4" && lib.versionOlder old.version "3.5") { - CRYPTOGRAPHY_DONT_BUILD_RUST = "1"; - } // lib.optionalAttrs (lib.versionAtLeast old.version "3.5" && !isWheel) rec { - cargoDeps = - pkgs.rustPlatform.fetchCargoTarball { - src = old.src; - sourceRoot = "${old.pname}-${old.version}/${cargoRoot}"; - name = "${old.pname}-${old.version}"; - inherit sha256; - }; - cargoRoot = "src/rust"; - } - ); - - cyclonedx-python-lib = super.cyclonedx-python-lib.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - postPatch = '' - substituteInPlace setup.py --replace 'setuptools>=50.3.2,<51.0.0' 'setuptools' - ''; - }); - - cysystemd = super.cysystemd.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.systemd ]; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.pkg-config ]; - }); - - daphne = super.daphne.overridePythonAttrs (old: { - postPatch = '' - substituteInPlace setup.py --replace 'setup_requires=["pytest-runner"],' "" - ''; - }); - - darts = super.darts.override { - preferWheel = true; - }; - - datadog-lambda = super.datadog-lambda.overridePythonAttrs (old: { - postPatch = '' - substituteInPlace setup.py --replace "setuptools==" "setuptools>=" - ''; - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools ]; - }); - - databricks-connect = super.databricks-connect.overridePythonAttrs (old: { - sourceRoot = "."; - }); - - dbt-extractor = super.dbt-extractor.overridePythonAttrs - ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.cargo pkgs.rustc pkgs.maturin ]; - } - ); - - dbus-python = super.dbus-python.overridePythonAttrs (old: { - outputs = [ "out" "dev" ]; - - postPatch = old.postPatch or "" + '' - substituteInPlace ./configure --replace /usr/bin/file ${pkgs.file}/bin/file - substituteInPlace ./dbus-python.pc.in --replace 'Cflags: -I''${includedir}' 'Cflags: -I''${includedir}/dbus-1.0' - ''; - - configureFlags = (old.configureFlags or [ ]) ++ [ - "PYTHON_VERSION=${lib.versions.major self.python.version}" - ]; - - preConfigure = lib.concatStringsSep "\n" [ - (old.preConfigure or "") - (if (lib.versionAtLeast stdenv.hostPlatform.darwinMinVersion "11" && stdenv.isDarwin) then '' - MACOSX_DEPLOYMENT_TARGET=10.16 - '' else "") - ]; - - preBuild = old.preBuild or "" + '' - make distclean - ''; - - nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ pkg-config ]; - buildInputs = old.buildInputs or [ ] ++ [ pkgs.dbus pkgs.dbus-glib ] - # My guess why it's sometimes trying to -lncurses. - # It seems not to retain the dependency anyway. - ++ lib.optional (! self.python ? modules) pkgs.ncurses; - }); - - dcli = super.dcli.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - ddtrace = super.ddtrace.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ - (lib.optionals pkgs.stdenv.isDarwin [ pkgs.darwin.IOKit ]); - }); - - dictdiffer = super.dictdiffer.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - django = ( - super.django.overridePythonAttrs ( - old: { - propagatedNativeBuildInputs = (old.propagatedNativeBuildInputs or [ ]) - ++ [ pkgs.gettext self.pytest-runner ]; - } - ) - ); - - django-bakery = super.django-bakery.overridePythonAttrs ( - old: { - configurePhase = '' - if ! test -e LICENSE; then - touch LICENSE - fi - '' + (old.configurePhase or ""); - } - ); - - django-cors-headers = super.django-cors-headers.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - django-hijack = super.django-hijack.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - django-prometheus = super.django-prometheus.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - django-rosetta = super.django-rosetta.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - django-stubs-ext = super.django-stubs-ext.overridePythonAttrs ( - old: { - prePatch = (old.prePatch or "") + "touch ../LICENSE.txt"; - } - ); - - dlib = super.dlib.overridePythonAttrs ( - old: { - # Parallel building enabled - inherit (pkgs.python.pkgs.dlib) patches; - - enableParallelBuilding = true; - dontUseCmakeConfigure = true; - - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ pkgs.dlib.nativeBuildInputs; - buildInputs = (old.buildInputs or [ ]) ++ pkgs.dlib.buildInputs; - } - ); - - # Setuptools >= 60 broke build_py_2to3 - docutils = - if lib.versionOlder super.docutils.version "0.16" && lib.versionAtLeast super.setuptools.version "60" then - ( - super.docutils.overridePythonAttrs ( - old: { - SETUPTOOLS_USE_DISTUTILS = "stdlib"; - } - ) - ) else super.docutils; - - duckdb = super.duckdb.overridePythonAttrs (old: { - postPatch = lib.optionalString (!(old.src.isWheel or false)) '' - cd tools/pythonpkg - - substituteInPlace setup.py \ - --replace 'multiprocessing.cpu_count()' "$NIX_BUILD_CORES" \ - --replace 'setuptools_scm<7.0.0' 'setuptools_scm' - ''; - }); - - # Environment markers are not always included (depending on how a dep was defined) - enum34 = if self.pythonAtLeast "3.4" then null else super.enum34; - - eth-hash = super.eth-hash.overridePythonAttrs { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - }; - - eth-keyfile = super.eth-keyfile.overridePythonAttrs (old: { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - eth-keys = super.eth-keys.overridePythonAttrs { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - }; - - # FIXME: this is a workaround for https://github.com/nix-community/poetry2nix/issues/1161 - eth-utils = super.eth-utils.override { preferWheel = true; }; - - evdev = super.evdev.overridePythonAttrs (old: { - preConfigure = '' - substituteInPlace setup.py --replace /usr/include/linux ${pkgs.linuxHeaders}/include/linux - ''; - }); - - faker = super.faker.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; - } - ); - - fancycompleter = super.fancycompleter.overridePythonAttrs ( - old: { - postPatch = lib.optionalString (!(old.src.isWheel or false)) '' - substituteInPlace setup.py \ - --replace 'setup_requires="setupmeta"' 'setup_requires=[]' \ - --replace 'versioning="devcommit"' 'version="${old.version}"' - ''; - } - ); - - fastecdsa = super.fastecdsa.overridePythonAttrs (old: { - buildInputs = old.buildInputs ++ [ pkgs.gmp.dev ]; - }); - - fastparquet = super.fastparquet.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - file-magic = super.file-magic.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace magic.py --replace "find_library('magic')" "'${pkgs.file}/lib/libmagic${pkgs.stdenv.hostPlatform.extensions.sharedLibrary}'" - ''; - } - ); - - fiona = super.fiona.overridePythonAttrs ( - old: { - format = lib.optionalString (!(old.src.isWheel or false)) "setuptools"; - buildInputs = old.buildInputs or [ ] ++ [ pkgs.gdal ]; - nativeBuildInputs = old.nativeBuildInputs or [ ] - ++ lib.optionals ((old.src.isWheel or false) && (!pkgs.stdenv.isDarwin)) [ pkgs.autoPatchelfHook ] - # for gdal-config - ++ [ pkgs.gdal ]; - } - ); - - flatbuffers = super.flatbuffers.overrideAttrs (old: { - VERSION = old.version; - }); - - gdal = - let - # Build gdal without python bindings to prevent version mixing - # We're only interested in the native libraries, not the python ones - # as we build that separately. - gdal = pkgs.gdal.overrideAttrs (old: { - doInstallCheck = false; - doCheck = false; - cmakeFlags = (old.cmakeFlags or [ ]) ++ [ - "-DBUILD_PYTHON_BINDINGS=OFF" - ]; - }); - in - super.gdal.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ gdal ]; - preBuild = (old.preBuild or "") + '' - substituteInPlace setup.cfg \ - --replace "../../apps/gdal-config" '${gdal}/bin/gdal-config' - ''; - } - ); - - grandalf = super.grandalf.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; - } - ); - - granian = - let - getRepoHash = version: { - "0.2.1" = "sha256-XEhu6M1hFi3/gAKZcei7KJSrIhhlZhlvZvbfyA6VLR4="; - "0.2.2" = "sha256-KWwefJ3CfOUGCgAm7AhFlIxRF9qxNEo3npGOxVJ23FY="; - "0.2.3" = "sha256-2JnyO0wxkV49R/0wzDb/PnUWWHi3ckwK4nVe7dWeH1k="; - "0.2.4" = "sha256-GdQJvVPsWgC1z7La9h11x2pRAP+L998yImhTFrFT5l8="; - "0.2.5" = "sha256-vMXMxss77rmXSjoB53eE8XN2jXyIEf03WoQiDfvhDmw="; - "0.2.6" = "sha256-l9W9+KDg/43mc0toEz1n1pqw+oQdiHdAxGlS+KLIGhw="; - "0.3.0" = "sha256-icBjtW8fZjT3mLo43nKWdirMz6GZIy/RghEO95pHJEU="; - "0.3.1" = "sha256-EKK+RxkJ//fY43EjvN1Fry7mn2ZLIaNlTyKPJRxyKZs="; - }.${version}; - sha256 = getRepoHash super.granian.version; - in - super.granian.overridePythonAttrs (old: rec { - src = pkgs.fetchFromGitHub { - owner = "emmett-framework"; - repo = "granian"; - rev = "v${old.version}"; - inherit sha256; - }; - cargoDeps = pkgs.rustPlatform.importCargoLock { - lockFile = "${src.out}/Cargo.lock"; - }; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkgs.rustPlatform.cargoSetupHook - pkgs.rustPlatform.maturinBuildHook - ]; - }); - - gitpython = super.gitpython.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.typing-extensions ]; - } - ); - - grpcio = super.grpcio.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.c-ares pkgs.openssl pkgs.zlib ]; - - outputs = [ "out" "dev" ]; - - GRPC_BUILD_WITH_BORING_SSL_ASM = ""; - GRPC_PYTHON_BUILD_SYSTEM_OPENSSL = 1; - GRPC_PYTHON_BUILD_SYSTEM_ZLIB = 1; - GRPC_PYTHON_BUILD_SYSTEM_CARES = 1; - DISABLE_LIBC_COMPATIBILITY = 1; - }); - - grpcio-tools = super.grpcio-tools.overridePythonAttrs (old: { - outputs = [ "out" "dev" ]; - }); - - gunicorn = super.gunicorn.overridePythonAttrs (old: { - # actually needs setuptools as a runtime dependency - propagatedBuildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools ]; - }); - - h3 = super.h3.overridePythonAttrs ( - old: { - preBuild = (old.preBuild or "") + '' - substituteInPlace h3/h3.py \ - --replace "'{}/{}'.format(_dirname, libh3_path)" '"${pkgs.h3}/lib/libh3${pkgs.stdenv.hostPlatform.extensions.sharedLibrary}"' - ''; - } - ); - - h5py = super.h5py.overridePythonAttrs ( - old: - if old.format != "wheel" then - ( - let - mpi = pkgs.hdf5.mpi; - mpiSupport = pkgs.hdf5.mpiSupport; - in - { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = - (old.buildInputs or [ ]) - ++ [ pkgs.hdf5 self.pkgconfig ] - ++ lib.optional mpiSupport mpi - ; - propagatedBuildInputs = - (old.propagatedBuildInputs or [ ]) - ++ lib.optionals mpiSupport [ self.mpi4py pkgs.openssh ] - ; - preBuild = if mpiSupport then "export CC=${mpi}/bin/mpicc" else ""; - HDF5_DIR = "${pkgs.hdf5}"; - HDF5_MPI = if mpiSupport then "ON" else "OFF"; - # avoid strict pinning of numpy - postPatch = '' - substituteInPlace setup.py \ - --replace "numpy ==" "numpy >=" - ''; - pythonImportsCheck = [ "h5py" ]; - } - ) else old - ); - - hid = super.hid.overridePythonAttrs ( - old: { - postPatch = '' - found= - for name in libhidapi-hidraw libhidapi-libusb libhidapi-iohidmanager libhidapi; do - full_path=${pkgs.hidapi.out}/lib/$name${pkgs.stdenv.hostPlatform.extensions.sharedLibrary} - if test -f $full_path; then - found=t - sed -i -e "s|'$name\..*'|'$full_path'|" hid/__init__.py - fi - done - test -n "$found" || { echo "ERROR: No known libraries found in ${pkgs.hidapi.out}/lib, please update/fix this build expression."; exit 1; } - ''; - } - ); - - hikari = super.hikari.overrideAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - hikari-lightbulb = super.hikari-lightbulb.overrideAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - horovod = super.horovod.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.mpi ]; - } - ); - - httplib2 = super.httplib2.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.pyparsing ]; - }); - - icecream = super.icecream.overridePythonAttrs (old: { - # # ERROR: Could not find a version that satisfies the requirement executing>=0.3.1 (from icecream) (from versions: none) - postPatch = '' - substituteInPlace setup.py --replace 'executing>=0.3.1' 'executing' - ''; - }); - - igraph = super.igraph.overridePythonAttrs ( - old: { - nativeBuildInputs = [ pkgs.cmake ] ++ old.nativeBuildInputs; - dontUseCmakeConfigure = true; - } - ); - - imagecodecs = super.imagecodecs.overridePythonAttrs ( - old: { - patchPhase = '' - substituteInPlace setup.py \ - --replace "/usr/include/openjpeg-2.3" \ - "${pkgs.openjpeg.dev}/include/${pkgs.openjpeg.dev.incDir} - substituteInPlace setup.py \ - --replace "/usr/include/jxrlib" \ - "$out/include/libjxr" - substituteInPlace imagecodecs/_zopfli.c \ - --replace '"zopfli/zopfli.h"' \ - '<zopfli.h>' - substituteInPlace imagecodecs/_zopfli.c \ - --replace '"zopfli/zlib_container.h"' \ - '<zlib_container.h>' - substituteInPlace imagecodecs/_zopfli.c \ - --replace '"zopfli/gzip_container.h"' \ - '<gzip_container.h>' - ''; - - preBuild = '' - mkdir -p $out/include/libjxr - ln -s ${pkgs.jxrlib}/include/libjxr/**/* $out/include/libjxr - - ''; - - buildInputs = (old.buildInputs or [ ]) ++ [ - # Commented out packages are declared required, but not actually - # needed to build. They are not yet packaged for nixpkgs. - # bitshuffle - pkgs.brotli - # brunsli - pkgs.bzip2 - pkgs.c-blosc - # charls - pkgs.giflib - pkgs.jxrlib - pkgs.lcms - pkgs.libaec - pkgs.libaec - pkgs.libjpeg_turbo - # liblzf - # liblzma - pkgs.libpng - pkgs.libtiff - pkgs.libwebp - pkgs.lz4 - pkgs.openjpeg - pkgs.snappy - # zfp - pkgs.zopfli - pkgs.zstd - pkgs.zlib - ]; - } - ); - - # importlib-metadata has an incomplete dependency specification - importlib-metadata = super.importlib-metadata.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ lib.optional self.python.isPy2 self.pathlib2; - } - ); - - intreehooks = super.intreehooks.overridePythonAttrs ( - old: { - doCheck = false; - } - ); - - ipython = super.ipython.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - isort = super.isort.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - jaraco-functools = super.jaraco-functools.overridePythonAttrs ( - old: { - # required for the extra "toml" dependency in setuptools_scm[toml] - buildInputs = (old.buildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - trio = super.trio.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) - ++ [ self.async-generator self.idna ]; - }); - - jeepney = super.jeepney.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.outcome self.trio ]; - }); - - jinja2-ansible-filters = super.jinja2-ansible-filters.overridePythonAttrs ( - old: { - preBuild = (old.preBuild or "") + '' - echo "${old.version}" > VERSION - ''; - } - ); - - jira = super.jira.overridePythonAttrs ( - old: { - inherit (pkgs.python3Packages.jira) patches; - buildInputs = (old.buildInputs or [ ]) ++ [ - self.pytestrunner - self.cryptography - self.pyjwt - self.setuptools-scm-git-archive - ]; - } - ); - - jq = super.jq.overridePythonAttrs (attrs: { - buildInputs = [ pkgs.jq ]; - patches = [ - (pkgs.fetchpatch { - url = "https://raw.githubusercontent.com/NixOS/nixpkgs/088da8735f6620b60d724aa7db742607ea216087/pkgs/development/python-modules/jq/jq-py-setup.patch"; - sha256 = "sha256-MYvX3S1YGe0QsUtExtOtULvp++AdVrv+Fid4Jh1xewQ="; - }) - ]; - }); - - jsondiff = - if lib.versionOlder "2.0.0" - then - super.jsondiff.overridePythonAttrs - ( - old: { - preBuild = lib.optionalString (!(old.src.isWheel or false)) ( - (old.preBuild or "") + '' - substituteInPlace setup.py \ - --replace "'jsondiff=jsondiff.cli:main_deprecated'," "" - '' - ); - } - ) - else super.jsondiff; - - jsonslicer = super.jsonslicer.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.pkgconfig ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.yajl ]; - }); - - jsonschema = - if lib.versionAtLeast super.jsonschema.version "4.0.0" - then - super.jsonschema.overridePythonAttrs - (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.importlib-resources ]; - }) - else super.jsonschema; - - jupyter = super.jupyter.overridePythonAttrs ( - old: { - # jupyter is a meta-package. Everything relevant comes from the - # dependencies. It does however have a jupyter.py file that conflicts - # with jupyter-core so this meta solves this conflict. - meta.priority = 100; - } - ); - - jupyter-packaging = super.jupyter-packaging.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools self.wheel ]; - }); - - jupyter-server = super.jupyter-server.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) - ++ [ self.hatchling ]; - buildInputs = (old.buildInputs or [ ]) - ++ [ self.hatch-jupyter-builder ]; - }); - - jupyterlab-widgets = super.jupyterlab-widgets.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.jupyter-packaging ]; - } - ); - - kerberos = super.kerberos.overrideAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.libkrb5 ]; - }); - - keyring = super.keyring.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - kiwisolver = super.kiwisolver.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.cppy - ]; - } - ); - - lap = super.lap.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.numpy - ]; - } - ); - - libarchive = super.libarchive.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools ]; - - postPatch = '' - substituteInPlace libarchive/library.py --replace \ - "_FILEPATH = find_and_load_library()" "_FILEPATH = '${pkgs.libarchive.lib}/lib/libarchive${stdenv.hostPlatform.extensions.sharedLibrary}'" - ''; - }); - - libvirt-python = super.libvirt-python.overridePythonAttrs ({ nativeBuildInputs ? [ ], ... }: { - nativeBuildInputs = nativeBuildInputs ++ [ pkg-config ]; - propagatedBuildInputs = [ pkgs.libvirt ]; - }); - - lightgbm = super.lightgbm.overridePythonAttrs ( - old: { - nativeBuildInputs = [ pkgs.cmake ] ++ old.nativeBuildInputs; - dontUseCmakeConfigure = true; - postConfigure = '' - export HOME=$(mktemp -d) - ''; - } - ); - - llama-cpp-python = super.llama-cpp-python.overridePythonAttrs ( - old: { - buildInputs = with pkgs; lib.optionals stdenv.isDarwin [ - darwin.apple_sdk.frameworks.Accelerate - ]; - nativeBuildInputs = [ pkgs.cmake ] ++ (old.nativeBuildInputs or [ ]); - preBuild = '' - cd "$OLDPWD" - ''; - } - ); - - llvmlite = super.llvmlite.overridePythonAttrs ( - old: - let - # see https://github.com/numba/llvmlite#compatibility - llvm_version = toString ( - if lib.versionAtLeast old.version "0.40.0" then 14 - else if lib.versionAtLeast old.version "0.37.0" then 11 - else if lib.versionAtLeast old.version "0.34.0" && !stdenv.buildPlatform.isAarch64 then 10 - else if lib.versionAtLeast old.version "0.33.0" then 9 - else if lib.versionAtLeast old.version "0.29.0" then 8 - else if lib.versionAtLeast old.version "0.27.0" then 7 - else if lib.versionAtLeast old.version "0.23.0" then 6 - else if lib.versionAtLeast old.version "0.21.0" then 5 - else 4 - ); - llvm = pkgs."llvmPackages_${llvm_version}".llvm or (throw "LLVM${llvm_version} has been removed from nixpkgs; upgrade llvmlite or use older nixpkgs"); - in - { - inherit llvm; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.llvmlite.llvm ]; - - # Disable static linking - # https://github.com/numba/llvmlite/issues/93 - postPatch = '' - substituteInPlace ffi/Makefile.linux --replace "-static-libstdc++" "" - - substituteInPlace llvmlite/tests/test_binding.py --replace "test_linux" "nope" - ''; - - # Set directory containing llvm-config binary - preConfigure = '' - export LLVM_CONFIG=${llvm.dev}/bin/llvm-config - ''; - - __impureHostDeps = lib.optionals pkgs.stdenv.isDarwin [ "/usr/lib/libm.dylib" ]; - - passthru = old.passthru // { llvm = llvm; }; - } - ); - - lsassy = - if super.lsassy.version == "3.1.1" then - super.lsassy.overridePythonAttrs - (old: { - # pyproject.toml contains a constraint `rich = "^10.6.0"` which is not replicated in setup.py - # hence pypi misses it and poetry pins rich to 11.0.0 - preConfigure = (old.preConfigure or "") + '' - rm pyproject.toml - ''; - }) else super.lsassy; - - lxml = super.lxml.overridePythonAttrs ( - old: { - nativeBuildInputs = with pkgs.buildPackages; (old.nativeBuildInputs or [ ]) ++ [ pkg-config libxml2.dev libxslt.dev ] ++ lib.optionals stdenv.isDarwin [ xcodebuild ]; - buildInputs = with pkgs; (old.buildInputs or [ ]) ++ [ libxml2 libxslt ]; - } - ); - - markdown-it-py = super.markdown-it-py.overridePythonAttrs ( - old: { - propagatedBuildInputs = builtins.filter (i: i.pname != "mdit-py-plugins") old.propagatedBuildInputs; - preConfigure = lib.optionalString (!(old.src.isWheel or false)) ( - (old.preConfigure or "") + '' - substituteInPlace pyproject.toml --replace 'plugins = ["mdit-py-plugins"]' 'plugins = []' - '' - ); - } - ); - - markupsafe = super.markupsafe.overridePythonAttrs ( - old: { - src = old.src.override { pname = builtins.replaceStrings [ "markupsafe" ] [ "MarkupSafe" ] old.pname; }; - } - ); - - matplotlib = super.matplotlib.overridePythonAttrs ( - old: - let - enableGhostscript = old.passthru.args.enableGhostscript or false; - enableGtk3 = old.passthru.args.enableGtk3 or false; - enableQt = old.passthru.args.enableQt or false; - enableTk = old.passthru.args.enableTk or false; - - interactive = enableTk || enableGtk3 || enableQt; - - passthru = { - config = { - directories = { basedirlist = "."; }; - libs = { - system_freetype = true; - system_qhull = true; - } // lib.optionalAttrs stdenv.isDarwin { - # LTO not working in darwin stdenv, see Nixpkgs #19312 - enable_lto = false; - }; - }; - }; - - inherit (pkgs) tk tcl wayland qhull; - inherit (pkgs.xorg) libX11; - inherit (pkgs.darwin.apple_sdk.frameworks) Cocoa; - in - { - XDG_RUNTIME_DIR = "/tmp"; - - buildInputs = old.buildInputs or [ ] ++ [ - pkgs.which - ] ++ lib.optionals enableGhostscript [ - pkgs.ghostscript - ] ++ lib.optionals stdenv.isDarwin [ - Cocoa - ] ++ lib.optionals (lib.versionAtLeast super.matplotlib.version "3.7.0") [ - self.pybind11 - ]; - - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.certifi - pkgs.libpng - pkgs.freetype - qhull - ] - ++ lib.optionals enableGtk3 [ pkgs.cairo self.pycairo pkgs.gtk3 pkgs.gobject-introspection self.pygobject3 ] - ++ lib.optionals enableTk [ pkgs.tcl pkgs.tk self.tkinter pkgs.libX11 ] - ++ lib.optionals enableQt [ self.pyqt5 ] - ; - - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkg-config - ] ++ lib.optionals (lib.versionAtLeast super.matplotlib.version "3.5.0") [ - self.setuptools-scm - self.setuptools-scm-git-archive - ]; - - # Clang doesn't understand -fno-strict-overflow, and matplotlib builds with -Werror - hardeningDisable = if stdenv.isDarwin then [ "strictoverflow" ] else [ ]; - - passthru = old.passthru or { } // passthru; - - MPLSETUPCFG = pkgs.writeText "mplsetup.cfg" (lib.generators.toINI { } passthru.config); - - # Matplotlib tries to find Tcl/Tk by opening a Tk window and asking the - # corresponding interpreter object for its library paths. This fails if - # `$DISPLAY` is not set. The fallback option assumes that Tcl/Tk are both - # installed under the same path which is not true in Nix. - # With the following patch we just hard-code these paths into the install - # script. - postPatch = - let - tcl_tk_cache = ''"${tk}/lib", "${tcl}/lib", "${lib.strings.substring 0 3 tk.version}"''; - in - lib.optionalString enableTk '' - sed -i '/self.tcl_tk_cache = None/s|None|${tcl_tk_cache}|' setupext.py - '' + lib.optionalString (stdenv.isLinux && interactive) '' - # fix paths to libraries in dlopen calls (headless detection) - substituteInPlace src/_c_internal_utils.c \ - --replace libX11.so.6 ${libX11}/lib/libX11.so.6 \ - --replace libwayland-client.so.0 ${wayland}/lib/libwayland-client.so.0 - '' + - # avoid matplotlib trying to download dependencies - '' - echo "[libs] - system_freetype=true - system_qhull=true" > mplsetup.cfg - ''; - - } - ); - - mccabe = super.mccabe.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; - } - ); - - mip = super.mip.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.autoPatchelfHook ]; - - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.zlib self.cppy ]; - } - ); - - mmdet = super.mmdet.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytorch ]; - } - ); - - molecule = - if lib.versionOlder super.molecule.version "3.0.0" then - (super.molecule.overridePythonAttrs ( - old: { - patches = (old.patches or [ ]) ++ [ - # Fix build with more recent setuptools versions - (pkgs.fetchpatch { - url = "https://github.com/ansible-community/molecule/commit/c9fee498646a702c77b5aecf6497cff324acd056.patch"; - sha256 = "1g1n45izdz0a3c9akgxx14zhdw6c3dkb48j8pq64n82fa6ndl1b7"; - excludes = [ "pyproject.toml" ]; - }) - ]; - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools self.setuptools-scm self.setuptools-scm-git-archive ]; - } - )) else - super.molecule.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools self.setuptools-scm self.setuptools-scm-git-archive ]; - }); - - munch = super.munch.overridePythonAttrs ( - old: { - # Latest version of pypi imports pkg_resources at runtime, so setuptools is needed at runtime. :( - # They fixed this last year but never released a new version. - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - } - ); - - mpi4py = super.mpi4py.overridePythonAttrs ( - old: - let - cfg = pkgs.writeTextFile { - name = "mpi.cfg"; - text = ( - lib.generators.toINI - { } - { - mpi = { - mpicc = "${pkgs.mpi.outPath}/bin/mpicc"; - }; - } - ); - }; - in - { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.mpi ]; - enableParallelBuilding = true; - preBuild = '' - ln -sf ${cfg} mpi.cfg - ''; - } - ); - - multiaddr = super.multiaddr.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - mypy = super.mypy.overridePythonAttrs ( - old: - let - # Compile mypy with mypyc, which makes mypy about 4 times faster. The compiled - # version is also the default in the wheels on Pypi that include binaries. - # is64bit: unfortunately the build would exhaust all possible memory on i686-linux. - MYPY_USE_MYPYC = stdenv.buildPlatform.is64bit; - - envAttrs = - if old ? env - then { env = old.env // { inherit MYPY_USE_MYPYC; }; } - else { inherit MYPY_USE_MYPYC; }; - in - { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.types-typed-ast - self.types-setuptools - ] - ++ lib.optional (lib.strings.versionAtLeast old.version "0.990") self.types-psutil - ; - - # when testing reduce optimisation level to drastically reduce build time - # (default is 3) - # MYPYC_OPT_LEVEL = 1; - } // envAttrs // lib.optionalAttrs (old.format != "wheel") { - # FIXME: Remove patch after upstream has decided the proper solution. - # https://github.com/python/mypy/pull/11143 - patches = (old.patches or [ ]) ++ lib.optionals ((lib.strings.versionAtLeast old.version "0.900") && lib.strings.versionOlder old.version "0.940") [ - (pkgs.fetchpatch { - url = "https://github.com/python/mypy/commit/f1755259d54330cd087cae763cd5bbbff26e3e8a.patch"; - sha256 = "sha256-5gPahX2X6+/qUaqDQIGJGvh9lQ2EDtks2cpQutgbOHk="; - }) - ] ++ lib.optionals ((lib.strings.versionAtLeast old.version "0.940") && lib.strings.versionOlder old.version "0.960") [ - (pkgs.fetchpatch { - url = "https://github.com/python/mypy/commit/e7869f05751561958b946b562093397027f6d5fa.patch"; - sha256 = "sha256-waIZ+m3tfvYE4HJ8kL6rN/C4fMjvLEe9UoPbt9mHWIM="; - }) - ] ++ lib.optionals ((lib.strings.versionAtLeast old.version "0.960") && (lib.strings.versionOlder old.version "0.971")) [ - (pkgs.fetchpatch { - url = "https://github.com/python/mypy/commit/2004ae023b9d3628d9f09886cbbc20868aee8554.patch"; - sha256 = "sha256-y+tXvgyiECO5+66YLvaje8Bz5iPvfWNIBJcsnZ2nOdI="; - }) - ]; - } - ); - - mysqlclient = super.mysqlclient.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.libmysqlclient ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.libmysqlclient ]; - } - ); - - netcdf4 = super.netcdf4.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - pkgs.zlib - pkgs.netcdf - pkgs.hdf5 - pkgs.curl - pkgs.libjpeg - ]; - - # Variables used to configure the build process - USE_NCCONFIG = "0"; - HDF5_DIR = lib.getDev pkgs.hdf5; - NETCDF4_DIR = pkgs.netcdf; - CURL_DIR = pkgs.curl.dev; - JPEG_DIR = pkgs.libjpeg.dev; - } - ); - - numpy = super.numpy.overridePythonAttrs ( - old: - let - blas = old.passthru.args.blas or pkgs.openblasCompat; - blasImplementation = lib.nameFromURL blas.name "-"; - cfg = pkgs.writeTextFile { - name = "site.cfg"; - text = ( - lib.generators.toINI - { } - { - ${blasImplementation} = { - include_dirs = "${blas}/include"; - library_dirs = "${blas}/lib"; - } // lib.optionalAttrs (blasImplementation == "mkl") { - mkl_libs = "mkl_rt"; - lapack_libs = ""; - }; - } - ); - }; - in - { - # fails to build with format=pyproject and setuptools >= 65 - format = if (old.format == "poetry2nix") then "setuptools" else old.format; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.gfortran ]; - buildInputs = (old.buildInputs or [ ]) ++ [ blas ]; - enableParallelBuilding = true; - preBuild = '' - ln -s ${cfg} site.cfg - ''; - preConfigure = '' - export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES - ''; - passthru = old.passthru // { - blas = blas; - inherit blasImplementation cfg; - }; - } - ); - - # The following are dependencies of torch >= 2.0.0. - # torch doesn't officially support system CUDA, unless you build it yourself. - nvidia-cudnn-cu11 = super.nvidia-cudnn-cu11.overridePythonAttrs (attrs: { - autoPatchelfIgnoreMissingDeps = true; - # (Bytecode collision happens with nvidia-cuda-nvrtc-cu11.) - postFixup = '' - rm -r $out/${self.python.sitePackages}/nvidia/{__pycache__,__init__.py} - ''; - propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ - self.nvidia-cublas-cu11 - ]; - }); - - nvidia-cuda-nvrtc-cu11 = super.nvidia-cuda-nvrtc-cu11.overridePythonAttrs (_: { - # (Bytecode collision happens with nvidia-cudnn-cu11.) - postFixup = '' - rm -r $out/${self.python.sitePackages}/nvidia/{__pycache__,__init__.py} - ''; - }); - - nvidia-cusolver-cu11 = super.nvidia-cusolver-cu11.overridePythonAttrs (attrs: { - autoPatchelfIgnoreMissingDeps = true; - # (Bytecode collision happens with nvidia-cusolver-cu11.) - postFixup = '' - rm -r $out/${self.python.sitePackages}/nvidia/{__pycache__,__init__.py} - ''; - propagatedBuildInputs = attrs.propagatedBuildInputs or [ ] ++ [ - self.nvidia-cublas-cu11 - ]; - }); - - omegaconf = super.omegaconf.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.jdk ]; - } - ); - - open3d = super.open3d.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.ipywidgets ]; - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.libusb1 - ] ++ lib.optionals stdenv.isLinux [ - pkgs.udev - ] ++ lib.optionals (lib.versionAtLeast super.open3d.version "0.16.0") [ - pkgs.mesa - ( - pkgs.symlinkJoin { - name = "llvm-with-ubuntu-compatible-symlink"; - paths = [ - pkgs.llvm_10.lib - (pkgs.runCommand "llvm-ubuntu-compatible-symlink" { } - '' - mkdir -p "$out/lib/"; - ln -s "${pkgs.llvm_10.lib}/lib/libLLVM-10.so" "$out/lib/libLLVM-10.so.1" - '' - ) - ]; - }) - ]; - - # Patch the dylib in the binary distribution to point to the nix build of libomp - preFixup = lib.optionalString (stdenv.isDarwin && lib.versionAtLeast super.open3d.version "0.16.0") '' - install_name_tool -change /opt/homebrew/opt/libomp/lib/libomp.dylib ${pkgs.llvmPackages.openmp}/lib/libomp.dylib $out/lib/python*/site-packages/open3d/cpu/pybind.cpython-*-darwin.so - ''; - - # TODO(Sem Mulder): Add overridable flags for CUDA/PyTorch/Tensorflow support. - autoPatchelfIgnoreMissingDeps = true; - }); - - openbabel-wheel = super.openbabel-wheel.override { preferWheel = true; }; - - # Overrides for building packages based on OpenCV - # These flags are inspired by the opencv 4.x package in nixpkgs - _opencv-python-override = - old: { - # Disable OpenCL on macOS - # Can't use cmakeFlags because cmake is called by setup.py - CMAKE_ARGS = lib.optionalString stdenv.isDarwin "-DWITH_OPENCL=OFF"; - - nativeBuildInputs = [ pkgs.cmake ] ++ old.nativeBuildInputs; - buildInputs = [ - self.scikit-build - ] ++ lib.optionals stdenv.isDarwin (with pkgs.darwin.apple_sdk.frameworks; [ - Accelerate - AVFoundation - Cocoa - CoreMedia - MediaToolbox - VideoDecodeAcceleration - ]) ++ (old.buildInputs or [ ]); - dontUseCmakeConfigure = true; - }; - - opencv-python = super.opencv-python.overridePythonAttrs self._opencv-python-override; - - opencv-python-headless = super.opencv-python-headless.overridePythonAttrs self._opencv-python-override; - - opencv-contrib-python = super.opencv-contrib-python.overridePythonAttrs self._opencv-python-override; - - openexr = super.openexr.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.openexr pkgs.ilmbase ]; - NIX_CFLAGS_COMPILE = [ "-I${pkgs.openexr.dev}/include/OpenEXR" "-I${pkgs.ilmbase.dev}/include/OpenEXR" ]; - } - ); - - openvino = super.openvino.overridePythonAttrs ( - old: { - buildInputs = [ - pkgs.ocl-icd - pkgs.hwloc - pkgs.tbb - pkgs.numactl - pkgs.libxml2 - ] ++ (old.buildInputs or [ ]); - } - ); - - orjson = - let - getCargoHash = version: { - "3.6.7" = "sha256-sz2k9podPB6QSptkyOu7+BoVTrKhefizRtYU+MICPt4="; - "3.6.8" = "sha256-vpfceVtYkU09xszNIihY1xbqGWieqDquxwsAmDH8jd4="; - "3.7.2" = "sha256-2U37IhftNYjH7sV7Nh51YpR/WjmPmmzX/aGuHsFgwf4="; - "3.7.9" = "sha256-QHzAhjHgm4XLxY2zUdnIsd/WWMI7dJLQQAvTXC+2asQ="; - "3.8.0" = "sha256-8k0DetamwLqkdcg8V/D2J5ja6IJSLi50CE+ZjFa7Hdc="; - "3.8.1" = "sha256-QXguyDxQHW9Fd3Nhmi5JzSxZQuk3HGPhhh/RGuOTZNY="; - "3.8.3" = "sha256-oSZO4cN1sJKd0T7pYrKG63is8AZMKaLRZqj5UCVY/14="; - "3.8.4" = "sha256-O2W9zO7qHWG+78T+uECICAmecaSIbTTJPktJIPZYElE="; - "3.8.5" = "sha256-JtUCJ3TP9EKGcddeyW1e/72k21uKneq9SnZJeLvn9Os="; - "3.8.6" = "sha256-8T//q6nQoZhh8oJWDCeQf3gYRew58dXAaxkYELY4CJM="; - "3.8.7" = "sha256-JBO8nl0sC+XIn17vI7hC8+nA1HYI9jfvZrl9nCE3k1s="; - "3.8.8" = "sha256-AK4HtqPKg2O2FeLHCbY9o+N1BV4QFMNaHVE1NaFYHa4="; - "3.8.10" = "sha256-AcrTEHv7GYtGe4fXYsM24ElrzfhnOxLYlaon1ZrlD4A="; - }.${version} or ( - lib.warn "Unknown orjson version: '${version}'. Please update getCargoHash." lib.fakeHash - ); - in - super.orjson.overridePythonAttrs (old: if old.src.isWheel or false then { } else { - cargoDeps = pkgs.rustPlatform.fetchCargoTarball { - inherit (old) src; - name = "${old.pname}-${old.version}"; - hash = getCargoHash old.version; - }; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkgs.rustPlatform.cargoSetupHook - pkgs.rustPlatform.maturinBuildHook - ]; - buildInputs = (old.buildInputs or [ ]) ++ lib.optional pkgs.stdenv.isDarwin pkgs.libiconv; - }); - - osqp = super.osqp.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.cmake ]; - dontUseCmakeConfigure = true; - } - ); - - - pandas = super.pandas.overridePythonAttrs (old: { - - buildInputs = old.buildInputs or [ ] ++ lib.optional stdenv.isDarwin pkgs.libcxx; - - # Doesn't work with -Werror,-Wunused-command-line-argument - # https://github.com/NixOS/nixpkgs/issues/39687 - hardeningDisable = lib.optional stdenv.cc.isClang "strictoverflow"; - - # For OSX, we need to add a dependency on libcxx, which provides - # `complex.h` and other libraries that pandas depends on to build. - postPatch = lib.optionalString (!(old.src.isWheel or false) && stdenv.isDarwin) '' - cpp_sdk="${lib.getDev pkgs.libcxx}/include/c++/v1"; - echo "Adding $cpp_sdk to the setup.py common_include variable" - substituteInPlace setup.py \ - --replace "['pandas/src/klib', 'pandas/src']" \ - "['pandas/src/klib', 'pandas/src', '$cpp_sdk']" - ''; - - - enableParallelBuilding = true; - }); - - pantalaimon = super.pantalaimon.overridePythonAttrs (old: { - nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ pkgs.installShellFiles ]; - postInstall = old.postInstall or "" + '' - installManPage docs/man/*.[1-9] - ''; - }); - - pao = super.pao.overridePythonAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs or [ ] ++ [ self.pyutilib ]; - }); - - paramiko = super.paramiko.overridePythonAttrs (old: { - doCheck = false; # requires networking - }); - - parsel = super.parsel.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - pdal = super.pdal.overridePythonAttrs ( - old: { - PDAL_CONFIG = "${pkgs.pdal}/bin/pdal-config"; - } - ); - - peewee = super.peewee.overridePythonAttrs ( - old: - let - withPostgres = old.passthru.withPostgres or false; - withMysql = old.passthru.withMysql or false; - in - { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.sqlite ]; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) - ++ lib.optional withPostgres self.psycopg2 - ++ lib.optional withMysql self.mysql-connector; - } - ); - - pikepdf = super.pikepdf.overridePythonAttrs ( - old: { - buildInputs = old.buildInputs or [ ] ++ [ pkgs.qpdf self.pybind11 ]; - pythonImportsCheck = old.pythonImportsCheck or [ ] ++ [ "pikepdf" ]; - } - ); - - pillow = super.pillow.overridePythonAttrs ( - old: - let - preConfigure = (old.preConfigure or "") + pkgs.python3.pkgs.pillow.preConfigure; - in - { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) - ++ [ pkg-config self.pytest-runner ]; - buildInputs = with pkgs; (old.buildInputs or [ ]) - ++ [ freetype libjpeg zlib libtiff libxcrypt libwebp tcl lcms2 ] - ++ lib.optionals (lib.versionAtLeast old.version "7.1.0") [ xorg.libxcb ] - ++ lib.optionals (self.isPyPy) [ tk xorg.libX11 ]; - preConfigure = lib.optional (old.format != "wheel") preConfigure; - } - ); - - pip-requirements-parser = super.pip-requirements-parser.overridePythonAttrs (old: { - dontConfigure = true; - }); - - pluralizer = super.pluralizer.overridePythonAttrs (old: { - preBuild = '' - export PYPI_VERSION="${old.version}" - ''; - }); - - poethepoet = super.poethepoet.overrideAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs ++ [ self.poetry ]; - }); - - poetry-core = super.poetry-core.overridePythonAttrs (old: - let - initFile = - if lib.versionOlder super.poetry-core.version "1.1" - then "poetry/__init__.py" - else "./src/poetry/core/__init__.py"; - in - { - # "Vendor" dependencies (for build-system support) - postPatch = '' - echo "import sys" >> ${initFile} - for path in $propagatedBuildInputs; do - echo "sys.path.insert(0, \"$path\")" >> ${initFile} - done - ''; - - # Propagating dependencies leads to issues downstream - # We've already patched poetry to prefer "vendored" dependencies - postFixup = '' - rm $out/nix-support/propagated-build-inputs - ''; - }); - - # Requires poetry which isn't available during bootstrap - poetry-plugin-export = super.poetry-plugin-export.overridePythonAttrs (old: { - dontUsePythonImportsCheck = true; - pipInstallFlags = [ - "--no-deps" - ]; - }); - - portend = super.portend.overridePythonAttrs ( - old: { - # required for the extra "toml" dependency in setuptools_scm[toml] - buildInputs = (old.buildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - prettytable = super.prettytable.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - prophet = super.prophet.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.cmdstan self.cmdstanpy ]; - PROPHET_REPACKAGE_CMDSTAN = "false"; - CMDSTAN = "${pkgs.cmdstan}"; - }); - - psycopg2 = super.psycopg2.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) - ++ lib.optional stdenv.isDarwin pkgs.openssl; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.postgresql ]; - } - ); - - psycopg2-binary = super.psycopg2-binary.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) - ++ lib.optional stdenv.isDarwin pkgs.openssl; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.postgresql ]; - } - ); - - psycopg2cffi = super.psycopg2cffi.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) - ++ lib.optional stdenv.isDarwin pkgs.openssl; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.postgresql ]; - } - ); - - py-solc-x = super.py-solc-x.overridePythonAttrs ( - old: { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.requests self.semantic-version ]; - } - ); - - pyarrow = - if (!super.pyarrow.src.isWheel or false) && lib.versionAtLeast super.pyarrow.version "0.16.0" then - super.pyarrow.overridePythonAttrs - ( - old: - let - parseMinor = drv: lib.concatStringsSep "." (lib.take 2 (lib.splitVersion drv.version)); - - # Starting with nixpkgs revision f149c7030a7, pyarrow takes "python3" as an argument - # instead of "python". Below we inspect function arguments to maintain compatibilitiy. - _arrow-cpp = pkgs.arrow-cpp.override ( - builtins.intersectAttrs - (lib.functionArgs pkgs.arrow-cpp.override) - { python = self.python; python3 = self.python; } - ); - - ARROW_HOME = _arrow-cpp; - arrowCppVersion = parseMinor _arrow-cpp; - pyArrowVersion = parseMinor super.pyarrow; - errorMessage = "arrow-cpp version (${arrowCppVersion}) mismatches pyarrow version (${pyArrowVersion})"; - in - if arrowCppVersion != pyArrowVersion then throw errorMessage else { - - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkg-config - pkgs.cmake - ]; - - buildInputs = (old.buildInputs or [ ]) ++ [ - _arrow-cpp - ]; - - preBuild = '' - export PYARROW_PARALLEL=$NIX_BUILD_CORES - ''; - - PARQUET_HOME = _arrow-cpp; - inherit ARROW_HOME; - - PYARROW_BUILD_TYPE = "release"; - PYARROW_WITH_FLIGHT = if _arrow-cpp.enableFlight then 1 else 0; - PYARROW_WITH_DATASET = 1; - PYARROW_WITH_PARQUET = 1; - PYARROW_CMAKE_OPTIONS = [ - "-DCMAKE_INSTALL_RPATH=${ARROW_HOME}/lib" - - # This doesn't use setup hook to call cmake so we need to workaround #54606 - # ourselves - "-DCMAKE_POLICY_DEFAULT_CMP0025=NEW" - ]; - - dontUseCmakeConfigure = true; - } - ) else - super.pyarrow; - - pycairo = ( - drv: ( - drv.overridePythonAttrs ( - _: { - format = "other"; - } - ) - ).overridePythonAttrs ( - old: { - - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.meson - pkgs.ninja - pkg-config - ]; - - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - pkgs.cairo - ]; - - mesonFlags = [ "-Dpython=${if self.isPy3k then "python3" else "python"}" ]; - } - ) - ) - super.pycairo; - - pycocotools = super.pycocotools.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.numpy - ]; - } - ); - - pyfftw = super.pyfftw.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.fftw - pkgs.fftwFloat - pkgs.fftwLongDouble - ]; - }); - - pyfuse3 = super.pyfuse3.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.fuse3 ]; - }); - - pygame = super.pygame.overridePythonAttrs ( - old: rec { - nativeBuildInputs = [ - pkg-config - pkgs.SDL - ]; - - buildInputs = [ - pkgs.SDL - pkgs.SDL_image - pkgs.SDL_mixer - pkgs.SDL_ttf - pkgs.libpng - pkgs.libjpeg - pkgs.portmidi - pkgs.xorg.libX11 - pkgs.freetype - ]; - - # Tests fail because of no audio device and display. - doCheck = false; - preConfigure = '' - sed \ - -e "s/origincdirs = .*/origincdirs = []/" \ - -e "s/origlibdirs = .*/origlibdirs = []/" \ - -e "/'\/lib\/i386-linux-gnu', '\/lib\/x86_64-linux-gnu']/d" \ - -e "/\/include\/smpeg/d" \ - -i buildconfig/config_unix.py - ${lib.concatMapStrings - (dep: '' - sed \ - -e "/origincdirs =/a\ origincdirs += ['${lib.getDev dep}/include']" \ - -e "/origlibdirs =/a\ origlibdirs += ['${lib.getLib dep}/lib']" \ - -i buildconfig/config_unix.py - '') - buildInputs - } - LOCALBASE=/ ${self.python.interpreter} buildconfig/config.py - ''; - } - ); - - pygeos = super.pygeos.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.geos ]; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.geos ]; - } - ); - - pygobject = super.pygobject.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.glib pkgs.gobject-introspection ]; - } - ); - - pylint = super.pylint.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - pymediainfo = super.pymediainfo.overridePythonAttrs ( - old: { - postPatch = (old.postPatch or "") + '' - substituteInPlace pymediainfo/__init__.py \ - --replace "libmediainfo.0.dylib" \ - "${pkgs.libmediainfo}/lib/libmediainfo.0${stdenv.hostPlatform.extensions.sharedLibrary}" \ - --replace "libmediainfo.dylib" \ - "${pkgs.libmediainfo}/lib/libmediainfo${stdenv.hostPlatform.extensions.sharedLibrary}" \ - --replace "libmediainfo.so.0" \ - "${pkgs.libmediainfo}/lib/libmediainfo${stdenv.hostPlatform.extensions.sharedLibrary}.0" - ''; - } - ); - - pynetbox = super.pynetbox.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - pynput = super.pynput.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) - ++ [ self.sphinx ]; - - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) - ++ [ self.setuptools-lint ]; - }); - - pymssql = super.pymssql.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) - ++ [ pkgs.openssl pkgs.libkrb5 ]; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) - ++ [ pkgs.freetds ]; - }); - - pyopencl = super.pyopencl.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.numpy ]; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.ocl-icd pkgs.opencl-headers ]; - } - ); - - pyopenssl = super.pyopenssl.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.openssl ]; - } - ); - - pyproj = super.pyproj.overridePythonAttrs ( - old: { - PROJ_DIR = "${pkgs.proj}"; - PROJ_LIBDIR = "${pkgs.proj}/lib"; - PROJ_INCDIR = "${pkgs.proj.dev}/include"; - } - ); - - pyrealsense2 = super.pyrealsense2.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.libusb1.out ]; - }); - - pyrfr = super.pyrfr.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.swig ]; - }); - - pyscard = super.pyscard.overridePythonAttrs (old: - # see https://github.com/NixOS/nixpkgs/blob/93568862a610dc1469dc40b15c1096a9357698ac/pkgs/development/python-modules/pyscard/default.nix - let - inherit (pkgs) PCSC pcsclite; - withApplePCSC = stdenv.isDarwin; - in - { - postPatch = - if withApplePCSC then '' - substituteInPlace smartcard/scard/winscarddll.c \ - --replace "/System/Library/Frameworks/PCSC.framework/PCSC" \ - "${PCSC}/Library/Frameworks/PCSC.framework/PCSC" - '' else '' - substituteInPlace smartcard/scard/winscarddll.c \ - --replace "libpcsclite.so.1" \ - "${lib.getLib pcsclite}/lib/libpcsclite${stdenv.hostPlatform.extensions.sharedLibrary}" - ''; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ ( - if withApplePCSC then [ PCSC ] else [ pcsclite ] - ); - NIX_CFLAGS_COMPILE = lib.optionalString (! withApplePCSC) - "-I ${lib.getDev pcsclite}/include/PCSC"; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkgs.swig - ]; - } - ); - - pytaglib = super.pytaglib.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.taglib ]; - }); - - pytezos = super.pytezos.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.libsodium ]; - }); - - python-bugzilla = super.python-bugzilla.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.docutils - ]; - } - ); - - python-ldap = super.python-ldap.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.openldap pkgs.cyrus_sasl ]; - } - ); - - python-snap7 = super.python-snap7.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - pkgs.snap7 - ]; - - postPatch = (old.postPatch or "") + '' - echo "Patching find_library call." - substituteInPlace snap7/common.py \ - --replace "find_library('snap7')" "\"${pkgs.snap7}/lib/libsnap7.so\"" - ''; - }); - - - pytoml = super.pytoml.overridePythonAttrs ( - old: { - doCheck = false; - } - ); - - pytorch-lightning = super.pytorch-lightning.override { - unpackPhase = '' - # $src remains a gzipped tarball otherwise. - mkdir -p tmp - tar xvf $src --directory=tmp - mv tmp/pytorch-lightning*/* . - rm -rf tmp - ''; - }; - - pyqt5 = - let - qt5 = selectQt5 super.pyqt5.version; - in - super.pyqt5.overridePythonAttrs ( - old: { - postPatch = '' - # Confirm license - sed -i s/"if tool == 'pep517':"/"if True:"/ project.py - ''; - - dontConfigure = true; - dontWrapQtApps = true; - nativeBuildInputs = old.nativeBuildInputs or [ ] ++ [ - self.pyqt-builder - self.sip - qt5.full - ]; - } - ); - - pyqt5-qt5 = - let - qt5 = selectQt5 super.pyqt5-qt5.version; - in - super.pyqt5-qt5.overridePythonAttrs ( - old: { - dontWrapQtApps = true; - propagatedBuildInputs = old.propagatedBuildInputs or [ ] ++ [ - qt5.full - qt5.qtgamepad # As of 2022-05-13 not a port of qt5.full - pkgs.gtk3 - pkgs.speechd - pkgs.postgresql - pkgs.unixODBC - ]; - } - ); - - pytest-datadir = super.pytest-datadir.overridePythonAttrs ( - old: { - postInstall = '' - rm -f $out/LICENSE - ''; - } - ); - - pytest = super.pytest.overridePythonAttrs ( - old: { - # Fixes https://github.com/pytest-dev/pytest/issues/7891 - postPatch = old.postPatch or "" + '' - # sometimes setup.cfg doesn't exist - if [ -f setup.cfg ]; then - sed -i '/\[metadata\]/aversion = ${old.version}' setup.cfg - fi - ''; - } - ); - - pytest-django = super.pytest-django.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace setup.py --replace "'pytest>=3.6'," "" - substituteInPlace setup.py --replace "'pytest>=3.6'" "" - ''; - } - ); - - pytest-randomly = super.pytest-randomly.overrideAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.importlib-metadata - ]; - }); - - pytest-runner = super.pytest-runner or super.pytestrunner; - - pytest-pylint = super.pytest-pylint.overridePythonAttrs ( - old: { - buildInputs = [ self.pytest-runner ]; - } - ); - - # pytest-splinter seems to put a .marker file in an empty directory - # presumably so it's tracked by and can be installed with MANIFEST.in, see - # https://github.com/pytest-dev/pytest-splinter/commit/a48eeef662f66ff9d3772af618748e73211a186b - # - # This directory then gets used as an empty initial profile directory and is - # zipped up. But if the .marker file is in the Nix store, it has the - # creation date of 1970, and Zip doesn't work with such old files, so it - # fails at runtime! - # - # We fix this here by just removing the file after the installation - # - # The error you get without this is: - # - # E ValueError: ZIP does not support timestamps before 1980 - # /nix/store/55b9ip7xkpimaccw9pa0vacy5q94f5xa-python3-3.7.6/lib/python3.7/zipfile.py:357: ValueError - pytest-splinter = super.pytest-splinter.overrideAttrs (old: { - postInstall = old.postInstall or "" + '' - rm $out/${super.python.sitePackages}/pytest_splinter/profiles/firefox/.marker - ''; - }); - - python-jose = super.python-jose.overridePythonAttrs ( - old: { - buildInputs = [ self.pytest-runner ]; - } - ); - - python-magic = super.python-magic.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace magic/loader.py \ - --replace "'libmagic.so.1'" "'${lib.getLib pkgs.file}/lib/libmagic.so.1'" - ''; - pythonImportsCheck = old.pythonImportsCheck or [ ] ++ [ "magic" ]; - } - ); - - python-olm = super.python-olm.overridePythonAttrs ( - old: { - buildInputs = old.buildInputs or [ ] ++ [ pkgs.olm ]; - } - ); - - python-pam = super.python-pam.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace src/pam/__internals.py \ - --replace 'find_library("pam")' '"${pkgs.pam}/lib/libpam.so"' \ - --replace 'find_library("pam_misc")' '"${pkgs.pam}/lib/libpam_misc.so"' - ''; - } - ); - - python-snappy = super.python-snappy.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.snappy ]; - } - ); - - python-twitter = super.python-twitter.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - }); - - pythran = super.pythran.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - }); - - ffmpeg-python = super.ffmpeg-python.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - python-prctl = super.python-prctl.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.libcap - ]; - } - ); - - pyudev = super.pyudev.overridePythonAttrs (old: { - postPatch = '' - substituteInPlace src/pyudev/_ctypeslib/utils.py \ - --replace "find_library(name)" "'${lib.getLib pkgs.systemd}/lib/libudev.so'" - ''; - }); - - pyusb = super.pyusb.overridePythonAttrs ( - old: { - postPatch = '' - libusb=${pkgs.libusb1.out}/lib/libusb-1.0${pkgs.stdenv.hostPlatform.extensions.sharedLibrary} - test -f $libusb || { echo "ERROR: $libusb doesn't exist, please update/fix this build expression."; exit 1; } - sed -i -e "s|find_library=None|find_library=lambda _:\"$libusb\"|" usb/backend/libusb1.py - ''; - } - ); - - pywavelets = super.pywavelets.overridePythonAttrs ( - old: { - HDF5_DIR = "${pkgs.hdf5}"; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.hdf5 ]; - } - ); - - pyzmq = super.pyzmq.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.zeromq ]; - } - ); - - recommonmark = super.rich.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.commonmark ]; - } - ); - - rich = super.rich.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.commonmark ]; - } - ); - - rockset = super.rockset.overridePythonAttrs ( - old: { - postPatch = '' - cp ./setup_rockset.py ./setup.py - ''; - } - ); - - scaleapi = super.scaleapi.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace setup.py --replace "install_requires = ['requests>=2.4.2', 'enum34']" "install_requires = ['requests>=2.4.2']" || true - ''; - } - ); - - panel = super.panel.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.nodejs ]; - } - ); - - # Pybind11 is an undeclared dependency of scipy that we need to pick from nixpkgs - # Make it not fail with infinite recursion - pybind11 = super.pybind11.overridePythonAttrs ( - old: { - cmakeFlags = (old.cmakeFlags or [ ]) ++ [ - "-DPYBIND11_TEST=off" - ]; - doCheck = false; # Circular test dependency - - # Link include and share so it can be used by packages that use pybind11 through cmake - postInstall = '' - ln -s $out/${self.python.sitePackages}/pybind11/{include,share} $out/ - ''; - } - ); - - rasterio = super.rasterio.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.gdal ]; - }); - - rfc3986-validator = super.rfc3986-validator.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.pytest-runner - ]; - }); - - rlp = super.rlp.overridePythonAttrs { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - }; - - rmfuse = super.rmfuse.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.setuptools ]; - }); - - rtree = super.rtree.overridePythonAttrs (old: { - propagatedNativeBuildInputs = (old.propagatedNativeBuildInputs or [ ]) ++ [ pkgs.libspatialindex ]; - postPatch = '' - substituteInPlace rtree/finder.py --replace \ - "find_library('spatialindex_c')" \ - "'${pkgs.libspatialindex}/lib/libspatialindex_c${pkgs.stdenv.hostPlatform.extensions.sharedLibrary}'" - ''; - }); - - ruamel-yaml = super.ruamel-yaml.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) - ++ [ self.ruamel-yaml-clib ]; - } - ); - - scipy = super.scipy.overridePythonAttrs ( - old: - if old.format != "wheel" then { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ - [ pkgs.gfortran ] ++ - lib.optionals (lib.versionAtLeast super.scipy.version "1.7.0") [ self.pythran ] ++ - lib.optionals (lib.versionAtLeast super.scipy.version "1.9.0") [ self.meson-python pkg-config ]; - dontUseMesonConfigure = true; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.pybind11 ]; - setupPyBuildFlags = [ "--fcompiler='gnu95'" ]; - enableParallelBuilding = true; - buildInputs = (old.buildInputs or [ ]) ++ [ self.numpy.blas ]; - preConfigure = '' - sed -i '0,/from numpy.distutils.core/s//import setuptools;from numpy.distutils.core/' setup.py - export NPY_NUM_BUILD_JOBS=$NIX_BUILD_CORES - ''; - preBuild = lib.optional (lib.versionOlder super.scipy.version "1.9.0") '' - ln -s ${self.numpy.cfg} site.cfg - ''; - } else old - ); - - scikit-image = super.scikit-image.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.pythran - self.packaging - self.wheel - self.numpy - ]; - } - ); - - scikit-learn = super.scikit-learn.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.gfortran - ] ++ lib.optionals stdenv.cc.isClang [ - pkgs.llvmPackages.openmp - ] ++ lib.optionals stdenv.isLinux [ - pkgs.glibcLocales - ]; - - enableParallelBuilding = true; - } - ); - - secp256k1 = super.secp256k1.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.pkgconfig pkgs.autoconf pkgs.automake pkgs.libtool ]; - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - doCheck = false; - # Local setuptools versions like "x.y.post0" confuse an internal check - postPatch = '' - substituteInPlace setup.py \ - --replace 'setuptools_version.' '"${self.setuptools.version}".' \ - --replace 'pytest-runner==' 'pytest-runner>=' - ''; - }); - - selenium = - let - v4orLater = lib.versionAtLeast super.selenium.version "4"; - selenium = super.selenium.override { - # Selenium >=4 is built with Bazel - preferWheel = v4orLater; - }; - in - selenium.overridePythonAttrs (old: { - # Selenium <4 can be installed from sources, with setuptools - buildInputs = old.buildInputs ++ (lib.optionals (!v4orLater) [ self.setuptools ]); - }); - - shapely = super.shapely.overridePythonAttrs ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.geos ]; - - GEOS_LIBRARY_PATH = "${pkgs.geos}/lib/libgeos_c${stdenv.hostPlatform.extensions.sharedLibrary}"; - - GEOS_LIBC = lib.optionalString (!stdenv.isDarwin) "${lib.getLib stdenv.cc.libc}/lib/libc${stdenv.hostPlatform.extensions.sharedLibrary}.6"; - - # Fix library paths - postPatch = lib.optionalString (!(old.src.isWheel or false)) (old.postPatch or "" + '' - ${pkgs.python3.interpreter} ${./shapely-rewrite.py} shapely/geos.py - ''); - } - ); - - shellcheck-py = super.shellcheck-py.overridePythonAttrs (old: { - - # Make fetching/installing external binaries no-ops - preConfigure = - let - fakeCommand = "type('FakeCommand', (Command,), {'initialize_options': lambda self: None, 'finalize_options': lambda self: None, 'run': lambda self: None})"; - in - '' - substituteInPlace setup.py \ - --replace "'fetch_binaries': fetch_binaries," "'fetch_binaries': ${fakeCommand}," \ - --replace "'install_shellcheck': install_shellcheck," "'install_shellcheck': ${fakeCommand}," - ''; - - propagatedUserEnvPkgs = (old.propagatedUserEnvPkgs or [ ]) ++ [ - pkgs.shellcheck - ]; - - }); - - soundfile = super.soundfile.overridePythonAttrs (old: { - postPatch = '' - substituteInPlace soundfile.py --replace "_find_library('sndfile')" "'${pkgs.libsndfile.out}/lib/libsndfile${stdenv.hostPlatform.extensions.sharedLibrary}'" - ''; - }); - - suds = super.suds.overridePythonAttrs (old: { - # Fix naming convention shenanigans. - # https://github.com/suds-community/suds/blob/a616d96b070ca119a532ff395d4a2a2ba42b257c/setup.py#L648 - SUDS_PACKAGE = "suds"; - }); - - systemd-python = super.systemd-python.overridePythonAttrs (old: { - buildInputs = old.buildInputs ++ [ pkgs.systemd ]; - nativeBuildInputs = old.nativeBuildInputs ++ [ pkgs.pkg-config ]; - }); - - tables = super.tables.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pywavelets ]; - HDF5_DIR = lib.getDev pkgs.hdf5; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - propagatedBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkgs.hdf5 self.numpy self.numexpr ]; - } - ); - - tempora = super.tempora.overridePythonAttrs ( - old: { - # required for the extra "toml" dependency in setuptools_scm[toml] - buildInputs = (old.buildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - tensorboard = super.tensorboard.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.wheel - self.absl-py - ]; - HDF5_DIR = "${pkgs.hdf5}"; - propagatedBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkgs.hdf5 - self.google-auth-oauthlib - self.tensorboard-plugin-wit - self.numpy - self.markdown - self.tensorboard-data-server - self.grpcio - self.protobuf - self.werkzeug - self.absl-py - ]; - } - ); - - tensorflow = super.tensorflow.overridePythonAttrs ( - old: { - postInstall = '' - rm $out/bin/tensorboard - ''; - } - ); - - tensorflow-macos = super.tensorflow-macos.overridePythonAttrs ( - old: { - postInstall = self.tensorflow.postInstall; - } - ); - - tensorpack = super.tensorpack.overridePythonAttrs ( - old: { - postPatch = '' - substituteInPlace setup.cfg --replace "# will call find_packages()" "" - ''; - } - ); - - tinycss2 = super.tinycss2.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - # The tokenizers build requires a complex rust setup (cf. nixpkgs override) - # - # Instead of providing a full source build, we use a wheel to keep - # the complexity manageable for now. - tokenizers = super.tokenizers.override { - preferWheel = true; - }; - - torch = super.torch.overridePythonAttrs (old: { - # torch has an auto-magical way to locate the cuda libraries from site-packages. - autoPatchelfIgnoreMissingDeps = true; - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.numpy - ]; - }); - - torchvision = super.torchvision.overridePythonAttrs (old: { - autoPatchelfIgnoreMissingDeps = true; - - # (no patchelf on darwin, since no elves there.) - preFixup = lib.optionals (!stdenv.isDarwin) '' - addAutoPatchelfSearchPath "${self.torch}/${self.python.sitePackages}/torch/lib" - ''; - - buildInputs = (old.buildInputs or [ ]) ++ [ - self.torch - ]; - }); - - # Circular dependency between triton and torch (see https://github.com/openai/triton/issues/1374) - # You can remove this once triton publishes a new stable build and torch takes it. - triton = super.triton.overridePythonAttrs (old: { - propagatedBuildInputs = builtins.filter (e: e.pname != "torch") old.propagatedBuildInputs; - pipInstallFlags = [ "--no-deps" ]; - }); - - typed_ast = super.typed-ast.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.pytest-runner - ]; - }); - - urwidtrees = super.urwidtrees.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.urwid - ]; - } - ); - - vose-alias-method = super.vose-alias-method.overridePythonAttrs ( - old: { - postInstall = '' - rm -f $out/LICENSE - ''; - } - ); - - vispy = super.vispy.overrideAttrs ( - old: { - inherit (pkgs.python3.pkgs.vispy) patches; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - self.setuptools-scm-git-archive - ]; - } - ); - - uvloop = super.uvloop.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ lib.optionals stdenv.isDarwin [ - pkgs.darwin.apple_sdk.frameworks.ApplicationServices - pkgs.darwin.apple_sdk.frameworks.CoreServices - ]; - } - ); - - - # Stop infinite recursion by using bootstrapped pkg from nixpkgs - bootstrapped-pip = super.bootstrapped-pip.override { - wheel = ((if self.python.isPy2 then pkgs.python2 else pkgs.python3).pkgs.override { - python = self.python; - }).wheel; - }; - - watchfiles = - let - # Watchfiles does not include Cargo.lock in tarball released on PyPi for versions up to 0.17.0 - getRepoHash = version: { - "0.19.0" = "sha256-NmmeoaIfFMNKCcjH6tPnkpflkN35bKlT76MqF9W8LBc="; - "0.18.1" = "sha256-XEhu6M1hFi3/gAKZcei7KJSrIhhlZhlvZvbfyA6VLR4="; - "0.18.0" = "sha256-biGGn0YAUbSO1hCJ4kU0ZWlqlXl/HRrBS3iIA3myRI8="; - "0.17.0" = "1swpf265h9qq30cx55iy6jjirba3wml16wzb68k527ynrxr7hvqx"; - "0.16.1" = "1ss6gzcr6js2d2sddgz1p52gyiwpqmgrxm8r6wim7gnm4wvhav8a"; - "0.15.0" = "14k3avrj7v794kk4mk2xggn40a4s0zg8iq8wmyyyrf7va6hz29hf"; - "0.14.1" = "1pgfbhxrvr3dw46x9piqj3ydxgn4lkrfp931q0cajinrpv4acfay"; - "0.14" = "0lml67ilyly0i632pffdy1gd07404vx90xnkw8q6wf6xp5afmkka"; - "0.13" = "0rkz8yr01mmxm2lcmbnr9i5c7n371mksij7v3ws0aqlrh3kgww02"; - "0.12" = "16788a0d8n1bb705f0k3dvav2fmbbl6pcikwpgarl1l3fcfff8kl"; - "0.11" = "0vx56h9wfxj7x3aq7jign4rnlfm7x9nhjwmsv8p22acbzbs10dgv"; - "0.10" = "0ypdy9sq4211djqh4ni5ap9l7whq9hw0vhsxjfl3a0a4czlldxqp"; - }.${version}; - sha256 = getRepoHash super.watchfiles.version; - in - super.watchfiles.overridePythonAttrs (old: rec { - src = pkgs.fetchFromGitHub { - owner = "samuelcolvin"; - repo = "watchfiles"; - rev = "v${old.version}"; - inherit sha256; - }; - patchPhase = builtins.concatStringsSep "\n" [ - (old.patchPhase or "") - '' - substituteInPlace "Cargo.lock" --replace 'version = "0.0.0"' 'version = "${old.version}"' - substituteInPlace "Cargo.toml" --replace 'version = "0.0.0"' 'version = "${old.version}"' - '' - ]; - cargoDeps = pkgs.rustPlatform.importCargoLock { - lockFile = "${src.out}/Cargo.lock"; - }; - buildInputs = (old.buildInputs or [ ]) ++ lib.optionals stdenv.isDarwin [ - pkgs.darwin.apple_sdk.frameworks.Security - pkgs.darwin.apple_sdk.frameworks.CoreServices - pkgs.libiconv - ]; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkgs.rustPlatform.cargoSetupHook - pkgs.rustPlatform.maturinBuildHook - ]; - }); - - weasyprint = super.weasyprint.overridePythonAttrs ( - old: { - inherit (pkgs.python3.pkgs.weasyprint) patches; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ self.pytest-runner ]; - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - web3 = super.web3.overridePythonAttrs { - preConfigure = '' - substituteInPlace setup.py --replace \'setuptools-markdown\' "" - ''; - }; - - weblate-language-data = super.weblate-language-data.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ - self.translate-toolkit - ]; - } - ); - - wheel = if self.python.isPy2 then - super.wheel.override { - inherit (self) bootstrapped-pip; - } - else - super.wheel; - - zipp = if super.zipp == null then null else - super.zipp.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.toml - ]; - } - ); - - psutil = super.psutil.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ - lib.optional stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.IOKit; - } - ); - - sentencepiece = super.sentencepiece.overridePythonAttrs ( - old: { - dontUseCmakeConfigure = true; - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ - pkg-config - pkgs.cmake - pkgs.gperftools - ]; - buildInputs = (old.buildInputs or [ ]) ++ [ - pkgs.sentencepiece - ]; - } - ); - - sentence-transformers = super.sentence-transformers.overridePythonAttrs ( - old: { - buildInputs = - (old.buildInputs or [ ]) - ++ [ self.typing-extensions ]; - } - ); - - supervisor = super.supervisor.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ - self.meld3 - self.setuptools - ]; - } - ); - - cytoolz = super.cytoolz.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.toolz ]; - } - ); - - # For some reason the toml dependency of tqdm declared here: - # https://github.com/tqdm/tqdm/blob/67130a23646ae672836b971e1086b6ae4c77d930/pyproject.toml#L2 - # is not translated correctly to a nix dependency. - tqdm = super.tqdm.overridePythonAttrs ( - old: { - buildInputs = [ super.toml ] ++ (old.buildInputs or [ ]); - } - ); - - watchdog = super.watchdog.overrideAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) - ++ lib.optional pkgs.stdenv.isDarwin pkgs.darwin.apple_sdk.frameworks.CoreServices; - } - ); - - # pyee cannot find `vcversioner` and other "setup requirements", so it tries to - # download them from the internet, which only works when nix sandboxing is disabled. - # Additionally, since pyee uses vcversioner to specify its version, we need to do this - # manually specify its version. - pyee = super.pyee.overrideAttrs ( - old: { - postPatch = old.postPatch or "" + '' - sed -i setup.py \ - -e '/setup_requires/,/],/d' \ - -e 's/vcversioner={},/version="${old.version}",/' - ''; - } - ); - - minimal-snowplow-tracker = super.minimal-snowplow-tracker.overridePythonAttrs - ( - old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ super.setuptools ]; - } - ); - - # nixpkgs has setuptools_scm 4.1.2 - # but newrelic has a seemingly unnecessary version constraint for <4 - # So we patch that out - newrelic = super.newrelic.overridePythonAttrs ( - old: { - postPatch = old.postPatch or "" + '' - substituteInPlace setup.py --replace '"setuptools_scm>=3.2,<4"' '"setuptools_scm"' - ''; - } - ); - - wxpython = super.wxpython.overridePythonAttrs (old: - let - localPython = self.python.withPackages (ps: with ps; [ - setuptools - numpy - six - ]); - in - { - DOXYGEN = "${pkgs.doxygen}/bin/doxygen"; - - nativeBuildInputs = with pkgs; [ - which - doxygen - gtk3 - pkg-config - autoPatchelfHook - ] ++ (old.nativeBuildInputs or [ ]); - - buildInputs = with pkgs; [ - gtk3 - webkitgtk - ncurses - SDL2 - xorg.libXinerama - xorg.libSM - xorg.libXxf86vm - xorg.libXtst - xorg.xorgproto - gst_all_1.gstreamer - gst_all_1.gst-plugins-base - libGLU - libGL - libglvnd - mesa - ] ++ old.buildInputs; - - buildPhase = '' - ${localPython.interpreter} build.py -v build_wx - ${localPython.interpreter} build.py -v dox etg --nodoc sip - ${localPython.interpreter} build.py -v build_py - ''; - - installPhase = '' - ${localPython.interpreter} setup.py install --skip-build --prefix=$out - ''; - }); - - marisa-trie = super.marisa-trie.overridePythonAttrs ( - old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.pytest-runner ]; - } - ); - - ua-parser = super.ua-parser.overridePythonAttrs ( - old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ self.pyyaml ]; - } - ); - - pygraphviz = super.pygraphviz.overridePythonAttrs (old: { - nativeBuildInputs = (old.nativeBuildInputs or [ ]) ++ [ pkg-config ]; - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.graphviz ]; - }); - - pysqlite = super.pysqlite.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]) ++ [ pkgs.sqlite ]; - patchPhase = '' - substituteInPlace "setup.cfg" \ - --replace "/usr/local/include" "${pkgs.sqlite.dev}/include" \ - --replace "/usr/local/lib" "${pkgs.sqlite.out}/lib" - ${lib.optionalString (!stdenv.isDarwin) ''export LDSHARED="$CC -pthread -shared"''} - ''; - }); - - selinux = super.selinux.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.setuptools-scm-git-archive ]; - }); - - setuptools-scm = super.setuptools-scm.overridePythonAttrs (old: { - setupHook = pkgs.writeText "setuptools-scm-setup-hook.sh" '' - poetry2nix-setuptools-scm-hook() { - if [ -z "''${dontPretendSetuptoolsSCMVersion-}" ]; then - export SETUPTOOLS_SCM_PRETEND_VERSION="$version" - fi - } - - preBuildHooks+=(poetry2nix-setuptools-scm-hook) - ''; - }); - - uwsgi = super.uwsgi.overridePythonAttrs - (old: - { - buildInputs = (old.buildInputs or [ ]) ++ [ pkgs.ncurses ]; - } // lib.optionalAttrs (lib.versionAtLeast old.version "2.0.19" && lib.versionOlder old.version "2.0.20") { - sourceRoot = "."; - }); - - wcwidth = super.wcwidth.overridePythonAttrs (old: { - propagatedBuildInputs = (old.propagatedBuildInputs or [ ]); - }); - - wtforms = super.wtforms.overridePythonAttrs (old: { - buildInputs = (old.buildInputs or [ ]) ++ [ self.Babel ]; - }); - - nbconvert = - let - patchExporters = lib.optionalString (lib.versionAtLeast self.nbconvert.version "6.5.0") '' - substituteInPlace \ - ./nbconvert/exporters/templateexporter.py \ - --replace \ - 'root_dirs.extend(jupyter_path())' \ - 'root_dirs.extend(jupyter_path() + [os.path.join("@out@", "share", "jupyter")])' \ - --subst-var out - ''; - in - super.nbconvert.overridePythonAttrs (old: { - postPatch = lib.optionalString (!(old.src.isWheel or false)) ( - patchExporters + lib.optionalString (lib.versionAtLeast self.nbconvert.version "7.0") '' - substituteInPlace \ - ./hatch_build.py \ - --replace \ - 'if self.target_name not in ["wheel", "sdist"]:' \ - 'if True:' - '' - ); - postInstall = lib.optionalString (old.src.isWheel or false) '' - pushd $out/${self.python.sitePackages} - ${patchExporters} - popd - ''; - }); - - meson-python = super.meson-python.overridePythonAttrs (old: { - dontUseMesonConfigure = true; - }); - - mkdocs = super.mkdocs.overridePythonAttrs (old: { - propagatedBuildInputs = old.propagatedBuildInputs or [ ] ++ [ self.babel ]; - }); - - # patch mkdocstrings to fix jinja2 imports - mkdocstrings = - let - patchJinja2Imports = self.pkgs.fetchpatch { - name = "fix-jinja2-imports.patch"; - url = "https://github.com/mkdocstrings/mkdocstrings/commit/b37722716b1e0ed6393ec71308dfb0f85e142f3b.patch"; - hash = "sha256-DD1SjEvs5HBlSRLrqP3jhF/yoeWkF7F3VXCD1gyt5Fc="; - }; - in - super.mkdocstrings.overridePythonAttrs ( - old: lib.optionalAttrs - (lib.versionAtLeast old.version "0.17" && lib.versionOlder old.version "0.18") - { - patches = old.patches or [ ] ++ lib.optionals (!(old.src.isWheel or false)) [ patchJinja2Imports ]; - # strip the first two levels ("a/src/") when patching since we're in site-packages - # just above mkdocstrings - postInstall = lib.optionalString (old.src.isWheel or false) '' - pushd "$out/${self.python.sitePackages}" - patch -p2 < "${patchJinja2Imports}" - popd - ''; - } - ); - - flake8-mutable = super.flake8-mutable.overridePythonAttrs - (old: { buildInputs = old.buildInputs or [ ] ++ [ self.pytest-runner ]; }); - pydantic = super.pydantic.overridePythonAttrs - (old: { buildInputs = old.buildInputs or [ ] ++ [ pkgs.libxcrypt ]; }); - - y-py = super.y-py.override { - preferWheel = true; - }; - } - ) -] |