From b21e6f2c580921f71d2194421a29c3abe3e715cd Mon Sep 17 00:00:00 2001 From: rewine Date: Thu, 12 Jan 2023 17:58:51 +0800 Subject: [PATCH] deepin-camera: init at 1.4.8 --- .../deepin/apps/deepin-camera/default.nix | 95 +++++++++++++++++++ .../apps/deepin-camera/dont_use_libPath.diff | 25 +++++ pkgs/desktops/deepin/default.nix | 1 + 3 files changed, 121 insertions(+) create mode 100644 pkgs/desktops/deepin/apps/deepin-camera/default.nix create mode 100644 pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff diff --git a/pkgs/desktops/deepin/apps/deepin-camera/default.nix b/pkgs/desktops/deepin/apps/deepin-camera/default.nix new file mode 100644 index 000000000000..27556ed73e04 --- /dev/null +++ b/pkgs/desktops/deepin/apps/deepin-camera/default.nix @@ -0,0 +1,95 @@ +{ stdenv +, lib +, fetchFromGitHub +, cmake +, pkg-config +, qttools +, wrapQtAppsHook +, dtkwidget +, qt5integration +, qt5platform-plugins +, image-editor +, qtbase +, qtmultimedia +, ffmpeg +, ffmpegthumbnailer +, libusb1 +, portaudio +, libv4l +, gst_all_1 +, systemd +}: + +stdenv.mkDerivation rec { + pname = "deepin-camera"; + version = "1.4.8"; + + src = fetchFromGitHub { + owner = "linuxdeepin"; + repo = pname; + rev = version; + sha256 = "sha256-p2RCetx1lgLonXZaC3umE+nDgZnp64o3iR2MgQhbisM="; + }; + + # QLibrary and dlopen work with LD_LIBRARY_PATH + patches = [ ./dont_use_libPath.diff ]; + + postPatch = '' + substituteInPlace src/CMakeLists.txt \ + --replace "/usr/share/libimagevisualresult/filter_cube" "${image-editor}/share/libimagevisualresult/filter_cube" \ + --replace "/usr/include/libusb-1.0" "${lib.getDev libusb1}/include/libusb-1.0" + substituteInPlace src/com.deepin.Camera.service \ + --replace "/usr/bin/qdbus" "${lib.getBin qttools}/bin/qdbus" \ + --replace "/usr/share/applications/deepin-camera.desktop" "$out/share/applications/deepin-camera.desktop" + ''; + + nativeBuildInputs = [ + cmake + pkg-config + qttools + wrapQtAppsHook + ]; + + buildInputs = [ + dtkwidget + qt5platform-plugins + image-editor + qtbase + qtmultimedia + ffmpeg + ffmpegthumbnailer + libusb1 + portaudio + libv4l + ] ++ (with gst_all_1 ; [ + gstreamer + gst-plugins-base + gst-plugins-good + gst-plugins-bad + ]); + + cmakeFlags = [ "-DVERSION=${version}" ]; + + NIX_CFLAGS_COMPILE = [ + "-I${gst_all_1.gstreamer.dev}/include/gstreamer-1.0" + "-I${gst_all_1.gst-plugins-base.dev}/include/gstreamer-1.0" + ]; + + # qt5integration must be placed before qtsvg in QT_PLUGIN_PATH + qtWrapperArgs = [ + "--prefix QT_PLUGIN_PATH : ${qt5integration}/${qtbase.qtPluginPrefix}" + "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ ffmpeg ffmpegthumbnailer gst_all_1.gstreamer gst_all_1.gst-plugins-base libusb1 libv4l portaudio systemd ]}" + ]; + + preFixup = '' + qtWrapperArgs+=(--prefix GST_PLUGIN_SYSTEM_PATH_1_0 : "$GST_PLUGIN_SYSTEM_PATH_1_0") + ''; + + meta = with lib; { + description = "Tool to view camera, take photo and video"; + homepage = "https://github.com/linuxdeepin/deepin-camera"; + license = licenses.gpl3Plus; + platforms = platforms.linux; + maintainers = teams.deepin.members; + }; +} diff --git a/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff b/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff new file mode 100644 index 000000000000..b4ef86f79b38 --- /dev/null +++ b/pkgs/desktops/deepin/apps/deepin-camera/dont_use_libPath.diff @@ -0,0 +1,25 @@ +diff --git a/src/src/mainwindow.cpp b/src/src/mainwindow.cpp +index d3c6f5c..4817446 100644 +--- a/src/src/mainwindow.cpp ++++ b/src/src/mainwindow.cpp +@@ -781,19 +781,7 @@ void CMainWindow::slotPopupSettingsDialog() + + QString CMainWindow::libPath(const QString &strlib) + { +- QDir dir; +- QString path = QLibraryInfo::location(QLibraryInfo::LibrariesPath); +- dir.setPath(path); +- QStringList list = dir.entryList(QStringList() << (strlib + "*"), QDir::NoDotAndDotDot | QDir::Files); //filter name with strlib +- +- if (list.contains(strlib)) +- return strlib; +- +- list.sort(); +- if (list.size() > 0) +- return list.last(); +- +- return ""; ++ return strlib; + } + + void CMainWindow::reflushSnapshotLabel() diff --git a/pkgs/desktops/deepin/default.nix b/pkgs/desktops/deepin/default.nix index 5afb5e03059c..af19ad55a81b 100644 --- a/pkgs/desktops/deepin/default.nix +++ b/pkgs/desktops/deepin/default.nix @@ -32,6 +32,7 @@ let #### Dtk Application deepin-album = callPackage ./apps/deepin-album { }; deepin-calculator = callPackage ./apps/deepin-calculator { }; + deepin-camera = callPackage ./apps/deepin-camera { }; deepin-compressor = callPackage ./apps/deepin-compressor { }; deepin-draw = callPackage ./apps/deepin-draw { }; deepin-editor = callPackage ./apps/deepin-editor { };