Something went wrong. Try again.
What happens if I push all of nixpkgs
Something went wrong. Try again.
4.4 kB · 150 lines
Nix
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151{ lib, stdenv, callPackage, pythonPackagesExtensions, config, makeScopeWithSplicing', ...}:
{ implementation, libPrefix, executable, sourceVersion, pythonVersion, packageOverrides, sitePackages, hasDistutilsCxxPatch, pythonOnBuildForBuild, pythonOnBuildForHost, pythonOnBuildForTarget, pythonOnHostForHost, pythonOnTargetForTarget, pythonAttr ? null, self, # is pythonOnHostForTarget}:let pythonPackages = let ensurePythonModules = items: let exceptions = [ stdenv ]; providesSetupHook = lib.attrByPath [ "provides" "setupHook" ] false; valid = value: pythonPackages.hasPythonModule value || providesSetupHook value || lib.elem value exceptions; func = name: value: if lib.isDerivation value then lib.extendDerivation ( valid value || throw "${name} should use `buildPythonPackage` or `toPythonModule` if it is to be part of the Python packages set." ) { } value else value; in lib.mapAttrs func items; in ensurePythonModules ( callPackage # Function that when called # - imports python-packages.nix # - adds spliced package sets to the package set # - applies overrides from `packageOverrides` and `pythonPackagesOverlays`. ( { pkgs, stdenv, python, overrides, }: let pythonPackagesFun = import ./python-packages-base.nix { inherit stdenv pkgs lib; python = self; }; otherSplices = { selfBuildBuild = pythonOnBuildForBuild.pkgs; selfBuildHost = pythonOnBuildForHost.pkgs; selfBuildTarget = pythonOnBuildForTarget.pkgs; selfHostHost = pythonOnHostForHost.pkgs; selfTargetTarget = pythonOnTargetForTarget.pkgs or { }; # There is no Python TargetTarget. }; hooks = import ./hooks/default.nix; keep = self: hooks self { }; optionalExtensions = cond: as: lib.optionals cond as; pythonExtension = import ../../../top-level/python-packages.nix; python2Extension = import ../../../top-level/python2-packages.nix; extensions = lib.composeManyExtensions ( [ hooks pythonExtension ] ++ (optionalExtensions (!self.isPy3k) [ python2Extension ]) ++ pythonPackagesExtensions ++ [ overrides ] ); aliases = self: super: lib.optionalAttrs config.allowAliases (import ../../../top-level/python-aliases.nix lib self super); in makeScopeWithSplicing' { inherit otherSplices keep; f = lib.extends (lib.composeExtensions aliases extensions) pythonPackagesFun; } ) { overrides = packageOverrides; python = self; } );inrec { isPy27 = pythonVersion == "2.7"; isPy37 = pythonVersion == "3.7"; isPy38 = pythonVersion == "3.8"; isPy39 = pythonVersion == "3.9"; isPy310 = pythonVersion == "3.10"; isPy311 = pythonVersion == "3.11"; isPy312 = pythonVersion == "3.12"; isPy313 = pythonVersion == "3.13"; isPy314 = pythonVersion == "3.14"; isPy2 = lib.strings.substring 0 1 pythonVersion == "2"; isPy3 = lib.strings.substring 0 1 pythonVersion == "3"; isPy3k = isPy3; isPyPy = lib.hasInfix "pypy" interpreter;
buildEnv = callPackage ./wrapper.nix { python = self; inherit (pythonPackages) requiredPythonModules; }; withPackages = import ./with-packages.nix { inherit buildEnv pythonPackages; }; pkgs = pythonPackages; interpreter = "${self}/bin/${executable}"; inherit executable implementation libPrefix pythonVersion sitePackages ; inherit sourceVersion; pythonAtLeast = lib.versionAtLeast pythonVersion; pythonOlder = lib.versionOlder pythonVersion; inherit hasDistutilsCxxPatch; inherit pythonOnBuildForHost;
tests = callPackage ./tests.nix { python = self; };
inherit pythonAttr;}