tvl-depot/users/Profpatsch/writers/default.nix
sterni 3f64e1fb04 chore(3p/sources): Bump channels & overlays
* //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>
2022-08-30 10:11:48 +00:00

108 lines
2.5 KiB
Nix
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{ 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 theres 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
;
}