* //users/Profpatsch/writers: adjust for API change in makePythonWriter: Since it has become cross-aware, we also need to provide the buildPackages python set we want to use. Change-Id: I4a201647281827ad983eb2dda6f6305f1ed824e7 Reviewed-on: https://cl.tvl.fyi/c/depot/+/6196 Tested-by: BuildkiteCI Autosubmit: sterni <sternenseemann@systemli.org> Reviewed-by: Profpatsch <mail@profpatsch.de>
		
			
				
	
	
		
			108 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			108 lines
		
	
	
	
		
			2.5 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ depot, pkgs, lib, ... }:
 | 
						||
let
 | 
						||
  bins = depot.nix.getBins pkgs.s6-portable-utils [ "s6-mkdir" "s6-cat" "s6-ln" "s6-ls" "s6-touch" ]
 | 
						||
    // depot.nix.getBins pkgs.coreutils [ "printf" ];
 | 
						||
 | 
						||
  inherit (depot.nix.yants) defun struct restrict attrs list string drv any;
 | 
						||
 | 
						||
  inherit (depot.nix) drvSeqL;
 | 
						||
 | 
						||
  FlakeError =
 | 
						||
    restrict
 | 
						||
      "flake error"
 | 
						||
      (s: lib.any (prefix: (builtins.substring 0 1 s) == prefix)
 | 
						||
        [ "E" "W" ])
 | 
						||
      string;
 | 
						||
  Libraries = defun [ (attrs any) (list drv) ];
 | 
						||
 | 
						||
  pythonPackages = pkgs.python310Packages;
 | 
						||
  buildPythonPackages = pkgs.buildPackages.python310Packages;
 | 
						||
  python = pythonPackages.python;
 | 
						||
 | 
						||
  python3 =
 | 
						||
    { name
 | 
						||
    , libraries ? (_: [ ])
 | 
						||
    , flakeIgnore ? [ ]
 | 
						||
    }:
 | 
						||
    let
 | 
						||
    in
 | 
						||
    pkgs.writers.makePythonWriter python pythonPackages buildPythonPackages name {
 | 
						||
      libraries = Libraries libraries pythonPackages;
 | 
						||
      flakeIgnore =
 | 
						||
        let
 | 
						||
          ignoreTheseErrors = [
 | 
						||
            # whitespace after {
 | 
						||
            "E201"
 | 
						||
            # whitespace before }
 | 
						||
            "E202"
 | 
						||
            # fuck 4-space indentation
 | 
						||
            "E121"
 | 
						||
            "E111"
 | 
						||
            # who cares about blank lines …
 | 
						||
            # … at end of files
 | 
						||
            "W391"
 | 
						||
            # … between functions
 | 
						||
            "E302"
 | 
						||
            "E305"
 | 
						||
            # … if there’s too many of them
 | 
						||
            "E303"
 | 
						||
            # or lines that are too long
 | 
						||
            "E501"
 | 
						||
          ];
 | 
						||
        in
 | 
						||
        list FlakeError (ignoreTheseErrors ++ flakeIgnore);
 | 
						||
    };
 | 
						||
 | 
						||
  # TODO: add the same flake check as the pyhon3 writer
 | 
						||
  python3Lib = { name, libraries ? (_: [ ]) }: moduleString:
 | 
						||
    let
 | 
						||
      srcTree = depot.nix.runExecline.local name { stdin = moduleString; } [
 | 
						||
        "importas"
 | 
						||
        "out"
 | 
						||
        "out"
 | 
						||
        "if"
 | 
						||
        [ bins.s6-mkdir "-p" "\${out}/${name}" ]
 | 
						||
        "if"
 | 
						||
        [
 | 
						||
          "redirfd"
 | 
						||
          "-w"
 | 
						||
          "1"
 | 
						||
          "\${out}/setup.py"
 | 
						||
          bins.printf
 | 
						||
          ''
 | 
						||
            from distutils.core import setup
 | 
						||
 | 
						||
            setup(
 | 
						||
              name='%s',
 | 
						||
              packages=['%s']
 | 
						||
            )
 | 
						||
          ''
 | 
						||
          name
 | 
						||
          name
 | 
						||
        ]
 | 
						||
        "if"
 | 
						||
        [
 | 
						||
          # redirect stdin to the init py
 | 
						||
          "redirfd"
 | 
						||
          "-w"
 | 
						||
          "1"
 | 
						||
          "\${out}/${name}/__init__.py"
 | 
						||
          bins.s6-cat
 | 
						||
        ]
 | 
						||
      ];
 | 
						||
    in
 | 
						||
    pythonPackages.buildPythonPackage {
 | 
						||
      inherit name;
 | 
						||
      src = srcTree;
 | 
						||
      propagatedBuildInputs = libraries pythonPackages;
 | 
						||
      doCheck = false;
 | 
						||
    };
 | 
						||
 | 
						||
 | 
						||
in
 | 
						||
{
 | 
						||
  inherit
 | 
						||
    python3
 | 
						||
    python3Lib
 | 
						||
    ;
 | 
						||
}
 |