diff --git a/pkgs/by-name/lc/lctime/package.nix b/pkgs/by-name/lc/lctime/package.nix new file mode 100644 index 000000000000..08db563674bd --- /dev/null +++ b/pkgs/by-name/lc/lctime/package.nix @@ -0,0 +1,100 @@ +{ + lib, + stdenv, + python3Packages, + fetchFromGitea, + runCommand, + lctime, + ngspice, + writableTmpDirAsHomeHook, +}: + +python3Packages.buildPythonApplication rec { + pname = "lctime"; + version = "0.0.26"; + pyproject = true; + + src = fetchFromGitea { + domain = "codeberg.org"; + owner = "librecell"; + repo = "lctime"; + tag = version; + hash = "sha256-oNmeV8r1dtO2y27jAJnlx4mKGjhzL07ad2yBdOLwgF0="; + }; + + build-system = with python3Packages; [ + setuptools + ]; + + dependencies = with python3Packages; [ + joblib + klayout + liberty-parser + matplotlib + networkx + numpy + pyspice + scipy + sympy + ]; + + nativeCheckInputs = with python3Packages; [ + pytestCheckHook + ngspice + ]; + + enabledTestPaths = [ + "src/lctime/*/*.py" + ]; + + disabledTestPaths = [ + # hangs indefinitely + "src/lctime/characterization/test_ngspice_subprocess.py::test_ngspice_interactive_simple" + "src/lctime/characterization/test_ngspice_subprocess.py::test_ngspice_subprocess_class" + ] + ++ lib.optionals stdenv.hostPlatform.isDarwin [ + # causes python to abort + "src/lctime/characterization/test_ngspice_subprocess.py::test_simple_simulation" + # broken pipe + "src/lctime/characterization/test_ngspice_subprocess.py::test_interactive_subprocess" + ]; + + pythonImportsCheck = [ + "lctime" + ]; + + passthru = { + tests = + runCommand "lctime-tests" + { + nativeBuildInputs = [ + lctime + ngspice + writableTmpDirAsHomeHook + ]; + } + '' + cd "$HOME" + + cp -R "${src}/tests/"* . + patchShebangs *.sh + + mkdir -p $out + ./run_tests.sh &> $out/result.log + ''; + }; + + meta = { + description = "Characterization tool for CMOS digital standard-cells"; + homepage = "https://codeberg.org/librecell/lctime"; + license = with lib.licenses; [ + agpl3Plus + asl20 + cc-by-sa-40 + cc0 + ]; + maintainers = with lib.maintainers; [ eljamm ]; + teams = with lib.teams; [ ngi ]; + mainProgram = "lctime"; + }; +}