From 7994821acc7990b05c63aa75535caa2b8f6ab015 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 10 Sep 2022 01:57:42 +0200 Subject: [PATCH 1/5] python3Packages.ezxdf: 0.12 -> 0.18.1 --- .../python-modules/ezdxf/default.nix | 41 +++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) diff --git a/pkgs/development/python-modules/ezdxf/default.nix b/pkgs/development/python-modules/ezdxf/default.nix index 3fd30062b0d9..6e1349883ada 100644 --- a/pkgs/development/python-modules/ezdxf/default.nix +++ b/pkgs/development/python-modules/ezdxf/default.nix @@ -1,22 +1,49 @@ -{ lib, buildPythonPackage, pythonOlder, fetchFromGitHub, pyparsing, pytest }: +{ lib +, buildPythonPackage +, pythonOlder +, fetchFromGitHub +, pyparsing +, typing-extensions +, pytestCheckHook +}: buildPythonPackage rec { - version = "0.12"; + version = "0.18.1"; pname = "ezdxf"; + format = "setuptools"; disabled = pythonOlder "3.5"; src = fetchFromGitHub { owner = "mozman"; repo = "ezdxf"; - rev = "v${version}"; - sha256 = "1flcq96ljk5wqrmgsb4acflqzkg7rhlaxz0j5jxky9za0mj1x6dq"; + rev = "refs/tags/v${version}"; + sha256 = "sha256-x1p9dWrbDtDreXdBuzOA4Za+ZC40y4xdEU7MGb9uUec="; }; - checkInputs = [ pytest ]; - checkPhase = "pytest tests integration_tests"; + propagatedBuildInputs = [ + pyparsing + typing-extensions + ]; - propagatedBuildInputs = [ pyparsing ]; + checkInputs = [ + pytestCheckHook + ]; + + disabledTests = [ + # requires geomdl dependency + "TestNurbsPythonCorrectness" + "test_rational_spline_curve_points_by_nurbs_python" + "test_rational_spline_derivatives_by_nurbs_python" + "test_from_nurbs_python_curve_to_ezdxf_bspline" + "test_from_ezdxf_bspline_to_nurbs_python_curve_non_rational" + "test_from_ezdxf_bspline_to_nurbs_python_curve_rational" + ]; + + pythonImportsCheck = [ + "ezdxf" + "ezdxf.addons" + ]; meta = with lib; { description = "Python package to read and write DXF drawings (interface to the DXF file format)"; From 47324bf9644095836459fc8715f0085698dc030f Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Mon, 12 Sep 2022 14:41:18 +0200 Subject: [PATCH 2/5] python3Packages.wxPython_4_0: propagate six --- pkgs/development/python-modules/wxPython/4.0.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/wxPython/4.0.nix b/pkgs/development/python-modules/wxPython/4.0.nix index 3a86ef4c6390..797fd3470d0c 100644 --- a/pkgs/development/python-modules/wxPython/4.0.nix +++ b/pkgs/development/python-modules/wxPython/4.0.nix @@ -20,6 +20,7 @@ , CoreFoundation , pillow , numpy +, six }: buildPythonPackage rec { @@ -44,7 +45,11 @@ buildPythonPackage rec { [ wxGTK.gtk ] ); - propagatedBuildInputs = [ pillow numpy ]; + propagatedBuildInputs = [ + numpy + pillow + six + ]; DOXYGEN = "${doxygen}/bin/doxygen"; From c4c7f4d700612cdeece46869e31c9945039ba950 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 10 Sep 2022 01:57:58 +0200 Subject: [PATCH 3/5] python3Packages.wxPython_4_1: propagate six ``` [...] File "/nix/store/mmwa03ack302jfzhd98bqycimhji9s2m-python3.10-wxPython-4.1.1/lib/python3.10/site-packages/wx/lib/embeddedimage.py", line 18, in from six import BytesIO ModuleNotFoundError: No module named 'six' ``` --- pkgs/development/python-modules/wxPython/4.1.nix | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkgs/development/python-modules/wxPython/4.1.nix b/pkgs/development/python-modules/wxPython/4.1.nix index 94fb10f113b3..5d9e4ff457a1 100644 --- a/pkgs/development/python-modules/wxPython/4.1.nix +++ b/pkgs/development/python-modules/wxPython/4.1.nix @@ -13,6 +13,7 @@ , wxGTK , pillow , numpy +, six , libXinerama , libSM , libXxf86vm @@ -70,7 +71,11 @@ buildPythonPackage rec { webkitgtk ]; - propagatedBuildInputs = [ pillow numpy ]; + propagatedBuildInputs = [ + pillow + numpy + six + ]; DOXYGEN = "${doxygen}/bin/doxygen"; From 838cdc756057f117116d338b40b92fecfadf6fc1 Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Tue, 13 Sep 2022 12:36:41 +0200 Subject: [PATCH 4/5] python3Packages.wxPython_4_2: init at 4.2.0 --- .../python-modules/wxPython/4.2-ctypes.patch | 18 +++ .../python-modules/wxPython/4.2.nix | 133 ++++++++++++++++++ pkgs/top-level/python-packages.nix | 7 + 3 files changed, 158 insertions(+) create mode 100644 pkgs/development/python-modules/wxPython/4.2-ctypes.patch create mode 100644 pkgs/development/python-modules/wxPython/4.2.nix diff --git a/pkgs/development/python-modules/wxPython/4.2-ctypes.patch b/pkgs/development/python-modules/wxPython/4.2-ctypes.patch new file mode 100644 index 000000000000..17fd8a9a8490 --- /dev/null +++ b/pkgs/development/python-modules/wxPython/4.2-ctypes.patch @@ -0,0 +1,18 @@ +diff --git a/wx/lib/wxcairo/wx_pycairo.py b/wx/lib/wxcairo/wx_pycairo.py +index 7cfe3071..24d1120f 100644 +--- a/wx/lib/wxcairo/wx_pycairo.py ++++ b/wx/lib/wxcairo/wx_pycairo.py +@@ -197,7 +197,12 @@ def _findCairoLib(): + + # For other DLLs we'll just use a dictionary to track them, as there + # probably isn't any need to use them outside of this module. +-_dlls = dict() ++_dlls = { ++ "gdk": ctypes.CDLL("@libgdk@"), ++ "pangocairo": ctypes.CDLL("@libpangocairo@"), ++ "cairoLib": ctypes.CDLL("@libcairo@"), ++ "appsvc": ctypes.CDLL(None), ++} + + def _findHelper(names, key, msg): + dll = _dlls.get(key, None) diff --git a/pkgs/development/python-modules/wxPython/4.2.nix b/pkgs/development/python-modules/wxPython/4.2.nix new file mode 100644 index 000000000000..a68d6cb4590a --- /dev/null +++ b/pkgs/development/python-modules/wxPython/4.2.nix @@ -0,0 +1,133 @@ +{ lib +, stdenv +, buildPythonPackage +, pythonOlder +, fetchPypi +, substituteAll + +# build +, autoPatchelfHook +, attrdict +, doxygen +, pkg-config +, python +, sip +, which + +# runtime +, cairo +, gst_all_1 +, gtk3 +, libGL +, libGLU +, libSM +, libXinerama +, libXtst +, libXxf86vm +, libglvnd +, mesa +, pango +, SDL +, webkitgtk +, wxGTK +, xorgproto + +# propagates +, numpy +, pillow +, six +}: + +buildPythonPackage rec { + pname = "wxPython"; + version = "4.2.0"; + format = "other"; + disabled = pythonOlder "3.7"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-ZjzrxFCdfl0RNRiGX+J093+VQ0xdV7w4btWNZc7thsc="; + }; + + patches = [ + (substituteAll { + src = ./4.2-ctypes.patch; + libgdk = "${gtk3.out}/lib/libgdk-3.so"; + libpangocairo = "${pango}/lib/libpangocairo-1.0.so"; + libcairo = "${cairo}/lib/libcairo.so"; + }) + ]; + + nativeBuildInputs = [ + attrdict + pkg-config + SDL + sip + which + wxGTK + ] ++ lib.optionals stdenv.isLinux [ + autoPatchelfHook + ]; + + buildInputs = [ + wxGTK + SDL + ] ++ lib.optionals stdenv.isLinux [ + gst_all_1.gst-plugins-base + gst_all_1.gstreamer + libGL + libGLU + libSM + libXinerama + libXtst + libXxf86vm + libglvnd + mesa + webkitgtk + xorgproto + ]; + + propagatedBuildInputs = [ + numpy + pillow + six + ]; + + buildPhase = '' + runHook preBuild + + export DOXYGEN=${doxygen}/bin/doxygen + export PATH="${wxGTK}/bin:$PATH" + export SDL_CONFIG="${SDL.dev}/bin/sdl-config" + + ${python.interpreter} build.py -v --use_syswx dox etg sip --nodoc build_py + + runHook postBuild + ''; + + + installPhase = '' + runHook preInstall + + ${python.interpreter} setup.py install --skip-build --prefix=$out + wrapPythonPrograms + + runHook postInstall + ''; + + checkPhase = '' + runHook preCheck + + ${python.interpreter} build.py -v test + + runHook postCheck + ''; + + + meta = with lib; { + description = "Cross platform GUI toolkit for Python, Phoenix version"; + homepage = "http://wxpython.org/"; + license = licenses.wxWindows; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 5fc08d1d688a..1b0b65748c50 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -11899,6 +11899,13 @@ in { }; }; + wxPython_4_2 = callPackage ../development/python-modules/wxPython/4.2.nix { + wxGTK = pkgs.wxGTK32.override { + withWebKit = true; + }; + }; + + x11_hash = callPackage ../development/python-modules/x11_hash { }; x256 = callPackage ../development/python-modules/x256 { }; From 446a718d13088aea9e15503f04e56d5f868ed91c Mon Sep 17 00:00:00 2001 From: Martin Weinelt Date: Sat, 10 Sep 2022 01:58:49 +0200 Subject: [PATCH 5/5] meerk40t: init at 0.8.0031 MeerK40t LaserCutter Software https://github.com/meerk40t/meerk40t --- pkgs/applications/misc/meerk40t/default.nix | 95 +++++++++++++++++++++ pkgs/top-level/all-packages.nix | 2 + 2 files changed, 97 insertions(+) create mode 100644 pkgs/applications/misc/meerk40t/default.nix diff --git a/pkgs/applications/misc/meerk40t/default.nix b/pkgs/applications/misc/meerk40t/default.nix new file mode 100644 index 000000000000..28a136c9a257 --- /dev/null +++ b/pkgs/applications/misc/meerk40t/default.nix @@ -0,0 +1,95 @@ +{ lib +, fetchFromGitHub +, python3 +, gtk3 +, wrapGAppsHook +}: + +let + inherit (python3.pkgs) buildPythonApplication buildPythonPackage fetchPypi; + + meerk40t-camera = buildPythonPackage rec { + pname = "meerk40t-camera"; + version = "0.1.9"; + format = "setuptools"; + + src = fetchPypi { + inherit pname version; + hash = "sha256-uGCBHdgWoorVX2XqMCg0YBweb00sQ9ZSbJe8rlGeovs="; + }; + + postPatch = '' + sed -i '/meerk40t/d' setup.py + ''; + + propagatedBuildInputs = with python3.pkgs; [ + opencv4 + ]; + + pythonImportsCheck = [ + "camera" + ]; + + doCheck = false; + + meta = with lib; { + description = "MeerK40t camera plugin"; + license = licenses.mit; + homepage = "https://github.com/meerk40t/meerk40t-camera"; + maintainers = with maintainers; [ hexa ]; + }; + }; +in +buildPythonApplication rec { + pname = "MeerK40t"; + version = "0.8.0031"; + format = "setuptools"; + + src = fetchFromGitHub { + owner = "meerk40t"; + repo = pname; + rev = "refs/tags/${version}"; + hash = "sha256-7Vc7Z+mxy+xRbUBeivkqVwO86ovZDo42M4G0ZD23vMk="; + }; + + nativeBuildInputs = [ + wrapGAppsHook + ]; + + # prevent double wrapping + dontWrapGApps = true; + + propagatedBuildInputs = with python3.pkgs; [ + ezdxf + meerk40t-camera + opencv4 + pillow + pyserial + pyusb + setuptools + wxPython_4_2 + ]; + + preFixup = '' + gappsWrapperArgs+=( + --prefix XDG_DATA_DIRS : "${gtk3}/share/gsettings-schemas/${gtk3.name}" + ) + makeWrapperArgs+=("''${gappsWrapperArgs[@]}") + ''; + + checkInputs = with python3.pkgs; [ + unittestCheckHook + ]; + + preCheck = '' + export HOME=$TMPDIR + ''; + + meta = with lib; { + changelog = "https://github.com/meerk40t/meerk40t/releases/tag/${version}"; + description = "MeerK40t LaserCutter Software"; + homepage = "https://github.com/meerk40t/meerk40t"; + license = licenses.mit; + maintainers = with maintainers; [ hexa ]; + }; +} diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 931151f94568..0f30d6fd0601 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -28701,6 +28701,8 @@ with pkgs; marker = callPackage ../applications/editors/marker { }; + meerk40t = callPackage ../applications/misc/meerk40t { }; + musikcube = callPackage ../applications/audio/musikcube { inherit (darwin.apple_sdk.frameworks) Cocoa SystemConfiguration; };