533e365c12
Smol writer to create a python lib directly from a nix string. The resulting library can be consumed by the writePython3 writer. Change-Id: Id3d793564d230b38a08f65140bda4287285e1a72 Reviewed-on: https://cl.tvl.fyi/c/depot/+/2310 Tested-by: BuildkiteCI Reviewed-by: tazjin <mail@tazj.in>
40 lines
986 B
Nix
40 lines
986 B
Nix
{ depot, pkgs, ... }:
|
|
let
|
|
bins = depot.nix.getBins pkgs.coreutils ["printf" "mkdir" "cat"];
|
|
|
|
python3Lib = { name, libraries ? (_: []) }: moduleString:
|
|
let srcTree = depot.nix.runExecline.local name { stdin = moduleString; } [
|
|
"importas" "out" "out"
|
|
"if" [ bins.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.cat
|
|
]
|
|
];
|
|
in pkgs.python3Packages.buildPythonPackage {
|
|
inherit name;
|
|
src = srcTree;
|
|
propagatedBuildInputs = libraries pkgs.python3Packages;
|
|
doCheck = false;
|
|
};
|
|
|
|
tests = import ./tests.nix { inherit depot pkgs python3Lib; };
|
|
|
|
in {
|
|
inherit
|
|
python3Lib
|
|
tests
|
|
;
|
|
}
|