diff options
author | Raymond Gauthier <jraygauthier@gmail.com> | 2022-06-15 16:20:59 -0400 |
---|---|---|
committer | Raymond Gauthier <jraygauthier@gmail.com> | 2022-06-18 07:42:37 -0400 |
commit | 11af729cd0535c48b22f65edc5112ec1fb04d7c7 (patch) | |
tree | 320661ac9387a62b4fc2239cb1c3bedf5b474879 /pkgs/os-specific | |
parent | 0e3b49e9a69de568aba2cf182d2ebefd7b6c85e4 (diff) |
tiscamera: 0.13.1 -> 1.0.0
Diffstat (limited to 'pkgs/os-specific')
4 files changed, 198 insertions, 40 deletions
diff --git a/pkgs/os-specific/linux/tiscamera/0001-cmake-find-aravis-fix-pkg-cfg-include-dirs.patch b/pkgs/os-specific/linux/tiscamera/0001-cmake-find-aravis-fix-pkg-cfg-include-dirs.patch new file mode 100644 index 0000000000000..0e98214678502 --- /dev/null +++ b/pkgs/os-specific/linux/tiscamera/0001-cmake-find-aravis-fix-pkg-cfg-include-dirs.patch @@ -0,0 +1,25 @@ +From 90b540bd135de2587352719b14c385b20aa572be Mon Sep 17 00:00:00 2001 +From: Raymond Gauthier <jraygauthier@gmail.com> +Date: Wed, 15 Jun 2022 16:09:58 -0400 +Subject: [PATCH] cmake-find-aravis: fix pkg cfg include dirs + +--- + cmake/modules/FindAravis.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/cmake/modules/FindAravis.cmake b/cmake/modules/FindAravis.cmake +index 5dab5431..811302b9 100644 +--- a/cmake/modules/FindAravis.cmake ++++ b/cmake/modules/FindAravis.cmake +@@ -20,7 +20,7 @@ find_path(aravis_INCLUDE_DIR + arv.h + PATHS + ${aravis_PKGCONF_INCLUDE_DIRS} +- ${aravis0_6_PKGCONF_INCLUDE_DIRS} ++ ${aravis0_8_PKGCONF_INCLUDE_DIRS} + /usr/local/include + # /usr/local/include/aravis-0.4 + /usr/local/include/aravis-0.8 +-- +2.31.1 + diff --git a/pkgs/os-specific/linux/tiscamera/0001-tcamconvert-tcamsrc-add-missing-include-lib-dirs.patch b/pkgs/os-specific/linux/tiscamera/0001-tcamconvert-tcamsrc-add-missing-include-lib-dirs.patch new file mode 100644 index 0000000000000..3d1e5503bcd3d --- /dev/null +++ b/pkgs/os-specific/linux/tiscamera/0001-tcamconvert-tcamsrc-add-missing-include-lib-dirs.patch @@ -0,0 +1,70 @@ +From 5e7146e176cb1b01b47d16a66763469dccd87f25 Mon Sep 17 00:00:00 2001 +From: Raymond Gauthier <jraygauthier@gmail.com> +Date: Thu, 9 Jun 2022 19:45:30 -0400 +Subject: [PATCH] tcamconvert&tcamsrc: add missing include/lib dirs + +These were building libraries with dependencies on gstreamer-video +and gstreamer-base but weren't adding the proper include and +lib directories which resulted in build failure on systems +where video and base aren't installed in the same location +as gstreamer itself (e.g: nix, nixos). +--- + src/gstreamer-1.0/tcamconvert/CMakeLists.txt | 2 ++ + src/gstreamer-1.0/tcamsrc/CMakeLists.txt | 11 +++++++++++ + 2 files changed, 13 insertions(+) + +diff --git a/src/gstreamer-1.0/tcamconvert/CMakeLists.txt b/src/gstreamer-1.0/tcamconvert/CMakeLists.txt +index 30563c38..066cb5d7 100644 +--- a/src/gstreamer-1.0/tcamconvert/CMakeLists.txt ++++ b/src/gstreamer-1.0/tcamconvert/CMakeLists.txt +@@ -28,6 +28,8 @@ add_library(tcamconvert SHARED + target_include_directories(tcamconvert + PRIVATE + ${GSTREAMER_INCLUDE_DIRS} ++ ${GSTREAMER_BASE_INCLUDE_DIRS} ++ ${GSTREAMER_VIDEO_INCLUDE_DIRS} + ) + + set_project_warnings(tcamconvert) +diff --git a/src/gstreamer-1.0/tcamsrc/CMakeLists.txt b/src/gstreamer-1.0/tcamsrc/CMakeLists.txt +index 3bc7ed97..ed5be37f 100644 +--- a/src/gstreamer-1.0/tcamsrc/CMakeLists.txt ++++ b/src/gstreamer-1.0/tcamsrc/CMakeLists.txt +@@ -21,12 +21,15 @@ add_library(gsttcamstatistics SHARED + target_include_directories(gsttcamstatistics + PRIVATE + ${GSTREAMER_INCLUDE_DIRS} ++ ${GSTREAMER_BASE_INCLUDE_DIRS} ++ ${GSTREAMER_VIDEO_INCLUDE_DIRS} + ) + + target_link_libraries( gsttcamstatistics + PRIVATE + ${GSTREAMER_LIBRARIES} + ${GSTREAMER_BASE_LIBRARIES} ++ ${GSTREAMER_VIDEO_LIBRARIES} + ) + + +@@ -53,10 +56,18 @@ add_library(gsttcamsrc SHARED + tcambind.cpp + ) + ++ target_include_directories(gsttcamsrc ++ PRIVATE ++ ${GSTREAMER_INCLUDE_DIRS} ++ ${GSTREAMER_BASE_INCLUDE_DIRS} ++ ${GSTREAMER_VIDEO_INCLUDE_DIRS} ++ ) ++ + target_link_libraries( gsttcamsrc + PRIVATE + ${GSTREAMER_LIBRARIES} + ${GSTREAMER_BASE_LIBRARIES} ++ ${GSTREAMER_VIDEO_LIBRARIES} + + tcamgstbase + tcam::gst-helper +-- +2.31.1 + diff --git a/pkgs/os-specific/linux/tiscamera/0001-udev-rules-fix-install-location.patch b/pkgs/os-specific/linux/tiscamera/0001-udev-rules-fix-install-location.patch new file mode 100644 index 0000000000000..9b373516aa9bc --- /dev/null +++ b/pkgs/os-specific/linux/tiscamera/0001-udev-rules-fix-install-location.patch @@ -0,0 +1,25 @@ +From fdbc0b74812b9afd663226715375b5688e5408b5 Mon Sep 17 00:00:00 2001 +From: Raymond Gauthier <jraygauthier@gmail.com> +Date: Thu, 9 Jun 2022 20:23:02 -0400 +Subject: [PATCH] udev/rules: fix install location + +--- + CMakeInstall.cmake | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/CMakeInstall.cmake b/CMakeInstall.cmake +index 4773091f..962c9b09 100644 +--- a/CMakeInstall.cmake ++++ b/CMakeInstall.cmake +@@ -92,7 +92,7 @@ else() + + else() + +- set(TCAM_INSTALL_UDEV "${CMAKE_INSTALL_PREFIX}/udev/rules.d" CACHE PATH "udev rules installation path" FORCE) ++ set(TCAM_INSTALL_UDEV "${CMAKE_INSTALL_PREFIX}/lib/udev/rules.d" CACHE PATH "udev rules installation path" FORCE) + set(TCAM_INSTALL_SYSTEMD "${CMAKE_INSTALL_PREFIX}/lib/systemd/system/" CACHE PATH "systemd unit installation path" FORCE) + + set(TCAM_INSTALL_PKGCONFIG "${CMAKE_INSTALL_PREFIX}/lib/pkgconfig" CACHE PATH "pkgconfig installation path" FORCE) +-- +2.31.1 + diff --git a/pkgs/os-specific/linux/tiscamera/default.nix b/pkgs/os-specific/linux/tiscamera/default.nix index 1182aead36bed..e16c2dffe50aa 100644 --- a/pkgs/os-specific/linux/tiscamera/default.nix +++ b/pkgs/os-specific/linux/tiscamera/default.nix @@ -3,82 +3,111 @@ , fetchFromGitHub , cmake , pkg-config -, pcre -, tinyxml +, runtimeShell +, catch2 +, elfutils +, libselinux +, libsepol +, libunwind , libusb1 +, libuuid , libzip +, orc +, pcre +, zstd , glib , gobject-introspection , gst_all_1 -, libwebcam -, libunwind -, elfutils -, orc -, python3Packages -, libuuid , wrapGAppsHook -, catch2 +, withDoc ? true +, sphinx +, graphviz +, withAravis ? true +, aravis +, meson +, withAravisUsbVision ? withAravis +, withGui ? true +, qt5 }: stdenv.mkDerivation rec { pname = "tiscamera"; - version = "0.13.1"; + version = "1.0.0"; src = fetchFromGitHub { owner = "TheImagingSource"; repo = pname; rev = "v-${pname}-${version}"; - sha256 = "0hpy9yhc4mn6w8gvzwif703smmcys0j2jqbz2xfghqxcyb0ykplj"; + sha256 = "0msz33wvqrji11kszdswcvljqnjflmjpk0aqzmsv6i855y8xn6cd"; }; + patches = [ + ./0001-tcamconvert-tcamsrc-add-missing-include-lib-dirs.patch + ./0001-udev-rules-fix-install-location.patch + ./0001-cmake-find-aravis-fix-pkg-cfg-include-dirs.patch + ]; + postPatch = '' cp ${catch2}/include/catch2/catch.hpp external/catch/catch.hpp + + substituteInPlace ./data/udev/80-theimagingsource-cameras.rules.in \ + --replace "/bin/sh" "${runtimeShell}/bin/sh" \ + --replace "typically /usr/bin/" "" \ + --replace "typically /usr/share/theimagingsource/tiscamera/uvc-extension/" "" ''; nativeBuildInputs = [ cmake pkg-config - python3Packages.wrapPython wrapGAppsHook + ] ++ lib.optionals withDoc [ + sphinx + graphviz + ] ++ lib.optionals withAravis [ + meson + ] ++ lib.optionals withGui [ + qt5.wrapQtAppsHook ]; buildInputs = [ - pcre - tinyxml + elfutils + libselinux + libsepol + libunwind libusb1 + libuuid libzip + orc + pcre + zstd glib gobject-introspection gst_all_1.gstreamer gst_all_1.gst-plugins-base - libwebcam - libunwind - elfutils - orc - libuuid - python3Packages.python - python3Packages.pyqt5 + gst_all_1.gst-plugins-good + gst_all_1.gst-plugins-bad + gst_all_1.gst-plugins-ugly + ] ++ lib.optionals withAravis [ + aravis + ] ++ lib.optionals withGui [ + qt5.qtbase ]; - pythonPath = with python3Packages; [ pyqt5 pygobject3 ]; - - propagatedBuildInputs = pythonPath; + hardeningDisable = [ "format" ]; cmakeFlags = [ - "-DBUILD_ARAVIS=OFF" # For GigE support. Won't need it as our camera is usb. - "-DBUILD_GST_1_0=ON" - "-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" + "-DTCAM_BUILD_GST_1_0=ON" + "-DTCAM_BUILD_TOOLS=ON" + "-DTCAM_BUILD_V4L2=ON" + "-DTCAM_BUILD_LIBUSB=ON" + "-DTCAM_BUILD_TESTS=ON" + "-DTCAM_BUILD_ARAVIS=${if withAravis then "ON" else "OFF"}" + "-DTCAM_BUILD_DOCUMENTATION=${if withDoc then "ON" else "OFF"}" + "-DTCAM_BUILD_WITH_GUI=${if withGui then "ON" else "OFF"}" + "-DTCAM_DOWNLOAD_MESON=OFF" + "-DTCAM_INTERNAL_ARAVIS=OFF" + "-DTCAM_ARAVIS_USB_VISION=${if withAravis && withAravisUsbVision then "ON" else "OFF"}" + "-DTCAM_INSTALL_FORCE_PREFIX=ON" # 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. @@ -90,8 +119,17 @@ stdenv.mkDerivation rec { # gstreamer tests requires, besides gst-plugins-bad, plugins installed by this expression. checkPhase = "ctest --force-new-ctest-process -E gstreamer"; - postFixup = '' - wrapPythonPrograms "$out $pythonPath" + # wrapGAppsHook: make sure we add ourselves to the introspection + # and gstreamer paths. + GI_TYPELIB_PATH = "${placeholder "out"}/lib/girepository-1.0"; + GST_PLUGIN_SYSTEM_PATH_1_0 = "${placeholder "out"}/lib/gstreamer-1.0"; + + QT_PLUGIN_PATH = lib.optionalString withGui "${qt5.qtbase.bin}/${qt5.qtbase.qtPluginPrefix}"; + + dontWrapQtApps = true; + + preFixup = '' + gappsWrapperArgs+=("''${qtWrapperArgs[@]}") ''; meta = with lib; { |