summary refs log tree commit diff
path: root/pkgs/os-specific/linux/tiscamera/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/os-specific/linux/tiscamera/default.nix')
-rw-r--r--pkgs/os-specific/linux/tiscamera/default.nix67
1 files changed, 31 insertions, 36 deletions
diff --git a/pkgs/os-specific/linux/tiscamera/default.nix b/pkgs/os-specific/linux/tiscamera/default.nix
index fb2773b4d3a..38bc7c3eaff 100644
--- a/pkgs/os-specific/linux/tiscamera/default.nix
+++ b/pkgs/os-specific/linux/tiscamera/default.nix
@@ -2,7 +2,7 @@
 , stdenv
 , fetchFromGitHub
 , cmake
-, pkgconfig
+, pkg-config
 , pcre
 , tinyxml
 , libusb1
@@ -12,27 +12,29 @@
 , gst_all_1
 , libwebcam
 , libunwind
-, gstreamer
 , elfutils
 , orc
-, python3
+, python3Packages
 , libuuid
+, wrapGAppsHook
 }:
 
 stdenv.mkDerivation rec {
   pname = "tiscamera";
-  version = "0.11.1";
+  version = "0.13.1";
 
   src = fetchFromGitHub {
     owner = "TheImagingSource";
     repo = pname;
     rev = "v-${pname}-${version}";
-    sha256 = "07vp6khgl6qd3a4519dmx1s5bfw7pld793p50pjn29fqh91fm93g";
+    sha256 = "0hpy9yhc4mn6w8gvzwif703smmcys0j2jqbz2xfghqxcyb0ykplj";
   };
 
   nativeBuildInputs = [
     cmake
-    pkgconfig
+    pkg-config
+    python3Packages.wrapPython
+    wrapGAppsHook
   ];
 
   buildInputs = [
@@ -46,13 +48,16 @@ stdenv.mkDerivation rec {
     gst_all_1.gst-plugins-base
     libwebcam
     libunwind
-    gstreamer
     elfutils
     orc
-    python3
     libuuid
+    python3Packages.python
+    python3Packages.pyqt5
   ];
 
+  pythonPath = with python3Packages; [ pyqt5 pygobject3 ];
+
+  propagatedBuildInputs = pythonPath;
 
   cmakeFlags = [
     "-DBUILD_ARAVIS=OFF" # For GigE support. Won't need it as our camera is usb.
@@ -60,38 +65,28 @@ stdenv.mkDerivation rec {
     "-DBUILD_TOOLS=ON"
     "-DBUILD_V4L2=ON"
     "-DBUILD_LIBUSB=ON"
+    "-DBUILD_TESTS=ON"
+    "-DTCAM_INSTALL_UDEV=${placeholder "out"}/lib/udev/rules.d"
+    "-DTCAM_INSTALL_UVCDYNCTRL=${placeholder "out"}/share/uvcdynctrl/data/199e"
+    "-DTCAM_INSTALL_GST_1_0=${placeholder "out"}/lib/gstreamer-1.0"
+    "-DTCAM_INSTALL_GIR=${placeholder "out"}/share/gir-1.0"
+    "-DTCAM_INSTALL_TYPELIB=${placeholder "out"}/lib/girepository-1.0"
+    "-DTCAM_INSTALL_SYSTEMD=${placeholder "out"}/etc/systemd/system"
+    "-DTCAM_INSTALL_PYTHON3_MODULES=${placeholder "out"}/lib/${python3Packages.python.libPrefix}/site-packages"
+    "-DGSTREAMER_1.0_INCLUDEDIR=${placeholder "out"}/include/gstreamer-1.0"
+    # There are gobject introspection commands launched as part of the build. Those have a runtime
+    # dependency on `libtcam` (which itself is built as part of this build). In order to allow
+    # that, we set the dynamic linker's path to point on the build time location of the library.
+    "-DCMAKE_SKIP_BUILD_RPATH=OFF"
   ];
 
-  postPatch = ''
-    substituteInPlace ./data/udev/80-theimagingsource-cameras.rules.in \
-      --replace "/usr/bin/uvcdynctrl" "${libwebcam}/bin/uvcdynctrl" \
-      --replace "/path/to/tiscamera/uvc-extensions" "$out/share/uvcdynctrl/data/199e"
-
-    substituteInPlace ./src/BackendLoader.cpp \
-      --replace '"libtcam-v4l2.so"' "\"$out/lib/tcam-0/libtcam-v4l2.so\"" \
-      --replace '"libtcam-aravis.so"' "\"$out/lib/tcam-0/libtcam-aravis.so\"" \
-      --replace '"libtcam-libusb.so"' "\"$out/lib/tcam-0/libtcam-libusb.so\""
-  '';
-
-  preConfigure = ''
-    cmakeFlagsArray=(
-      $cmakeFlagsArray
-      "-DCMAKE_INSTALL_PREFIX=$out"
-      "-DTCAM_INSTALL_UDEV=$out/lib/udev/rules.d"
-      "-DTCAM_INSTALL_UVCDYNCTRL=$out/share/uvcdynctrl/data/199e"
-      "-DTCAM_INSTALL_GST_1_0=$out/lib/gstreamer-1.0"
-      "-DTCAM_INSTALL_GIR=$out/share/gir-1.0"
-      "-DTCAM_INSTALL_TYPELIB=$out/lib/girepository-1.0"
-      "-DTCAM_INSTALL_SYSTEMD=$out/etc/systemd/system"
-    )
-  '';
+  doCheck = true;
 
+  # gstreamer tests requires, besides gst-plugins-bad, plugins installed by this expression.
+  checkPhase = "ctest --force-new-ctest-process -E gstreamer";
 
-  # There are gobject introspection commands launched as part of the build. Those have a runtime
-  # dependency on `libtcam` (which itself is built as part of this build). In order to allow
-  # that, we set the dynamic linker's path to point on the build time location of the library.
-  preBuild = ''
-    export LD_LIBRARY_PATH=$PWD/src''${LD_LIBRARY_PATH:+:}$LD_LIBRARY_PATH
+  postFixup = ''
+    wrapPythonPrograms "$out $pythonPath"
   '';
 
   meta = with lib; {