about summary refs log tree commit diff
path: root/nixpkgs/pkgs/by-name/ki
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/by-name/ki')
-rw-r--r--nixpkgs/pkgs/by-name/ki/kikit/default.nix85
-rw-r--r--nixpkgs/pkgs/by-name/ki/kikit/package.nix2
-rw-r--r--nixpkgs/pkgs/by-name/ki/kikit/solidpython/default.nix66
3 files changed, 153 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/by-name/ki/kikit/default.nix b/nixpkgs/pkgs/by-name/ki/kikit/default.nix
new file mode 100644
index 000000000000..886cca973837
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ki/kikit/default.nix
@@ -0,0 +1,85 @@
+{ bc
+, zip
+, lib
+, fetchFromGitHub
+, bats
+, buildPythonApplication
+, pythonOlder
+, callPackage
+, kicad
+, numpy
+, click
+, markdown2
+, pytestCheckHook
+, commentjson
+, wxPython_4_2
+, pcbnew-transition
+, pybars3
+, versioneer
+, shapely_1_8
+}:
+let
+  solidpython = callPackage ./solidpython { };
+in
+buildPythonApplication rec {
+  pname = "kikit";
+  version = "1.3.0";
+  format = "setuptools";
+
+  disabled = pythonOlder "3.7";
+
+  src = fetchFromGitHub {
+    owner = "yaqwsx";
+    repo = "KiKit";
+    rev = "v${version}";
+    hash = "sha256-kDTPk/R3eZtm4DjoUV4tSQzjGQ9k8MKQedX4oUXYzeo=";
+  };
+
+  propagatedBuildInputs = [
+    kicad
+    numpy
+    click
+    markdown2
+    commentjson
+    # https://github.com/yaqwsx/KiKit/issues/575
+    wxPython_4_2
+    pcbnew-transition
+    pybars3
+    # https://github.com/yaqwsx/KiKit/issues/574
+    shapely_1_8
+    # https://github.com/yaqwsx/KiKit/issues/576
+    solidpython
+  ];
+
+  nativeBuildInputs = [
+    versioneer
+    bc
+    zip
+  ];
+
+  nativeCheckInputs = [
+    pytestCheckHook
+    bats
+  ];
+
+  pythonImportsCheck = [
+    "kikit"
+  ];
+
+  preCheck = ''
+    export PATH=$PATH:$out/bin
+
+    make test-system
+
+    # pytest needs to run in a subdir. See https://github.com/yaqwsx/KiKit/blob/v1.3.0/Makefile#L43
+    cd test/units
+  '';
+
+  meta = with lib; {
+    description = "Automation for KiCAD boards";
+    homepage = "https://github.com/yaqwsx/KiKit/";
+    changelog = "https://github.com/yaqwsx/KiKit/releases/tag/v${version}";
+    maintainers = with maintainers; [ jfly matusf ];
+    license = licenses.mit;
+  };
+}
diff --git a/nixpkgs/pkgs/by-name/ki/kikit/package.nix b/nixpkgs/pkgs/by-name/ki/kikit/package.nix
new file mode 100644
index 000000000000..5f1daa8aa5cd
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ki/kikit/package.nix
@@ -0,0 +1,2 @@
+{ python3 }:
+(python3.pkgs.callPackage ./default.nix { })
diff --git a/nixpkgs/pkgs/by-name/ki/kikit/solidpython/default.nix b/nixpkgs/pkgs/by-name/ki/kikit/solidpython/default.nix
new file mode 100644
index 000000000000..c03637907a36
--- /dev/null
+++ b/nixpkgs/pkgs/by-name/ki/kikit/solidpython/default.nix
@@ -0,0 +1,66 @@
+# SolidPython is an unmaintained library with old dependencies.
+{ buildPythonPackage
+, callPackage
+, fetchFromGitHub
+, fetchFromGitLab
+, fetchpatch
+, lib
+, pythonRelaxDepsHook
+
+, poetry-core
+, prettytable
+, pypng
+, ply
+, setuptools
+, euclid3
+}:
+buildPythonPackage rec {
+  pname = "solidpython";
+  version = "1.1.3";
+  format = "pyproject";
+
+  src = fetchFromGitHub {
+    owner = "SolidCode";
+    repo = "SolidPython";
+    rev = "d962740d600c5dfd69458c4559fc416b9beab575";
+    hash = "sha256-3fJta2a5c8hV9FPwKn5pj01aBtsCGSRCz3vvxR/5n0Q=";
+  };
+
+  nativeBuildInputs = [
+    poetry-core
+    pythonRelaxDepsHook
+  ];
+
+  propagatedBuildInputs = [
+    ply
+    setuptools
+    euclid3
+
+    prettytable
+  ];
+
+  pythonRelaxDeps = [
+    # SolidPython has PrettyTable pinned to a hyper-specific version due to
+    # some ancient bug with Poetry. They aren't interested in unpinning because
+    # SolidPython v1 seems to be deprecated in favor of v2:
+    # https://github.com/SolidCode/SolidPython/issues/207
+    "PrettyTable"
+  ];
+
+  pythonRemoveDeps = [
+    # The pypng dependency is only used in an example script.
+    "pypng"
+  ];
+
+  pythonImportsCheck = [
+    "solid"
+  ];
+
+  meta = with lib; {
+    description = "Python interface to the OpenSCAD declarative geometry language";
+    homepage = "https://github.com/SolidCode/SolidPython";
+    changelog = "https://github.com/SolidCode/SolidPython/releases/tag/v${version}";
+    maintainers = with maintainers; [ jfly ];
+    license = licenses.lgpl21Plus;
+  };
+}