about summary refs log tree commit diff
diff options
context:
space:
mode:
authoruku <uku3lig@gmail.com>2023-11-23 15:14:13 +0100
committeruku <uku3lig@gmail.com>2023-12-03 05:19:00 +0100
commit66f8bb337ade76dbe6e0ddf2e62593046753ac90 (patch)
tree3a281e7806a0fc9e614ae935915a75ae152107d0
parent0aa1cc9fa4c2d70efece2bb5532c358c937de47d (diff)
downloadnixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar.gz
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar.bz2
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar.lz
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar.xz
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.tar.zst
nixlib-66f8bb337ade76dbe6e0ddf2e62593046753ac90.zip
shotcut: 21.09.20 -> 23.11.29
-rw-r--r--pkgs/applications/video/shotcut/default.nix62
-rw-r--r--pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch80
-rw-r--r--pkgs/top-level/all-packages.nix2
3 files changed, 104 insertions, 40 deletions
diff --git a/pkgs/applications/video/shotcut/default.nix b/pkgs/applications/video/shotcut/default.nix
index efa7782891ce..42f281567749 100644
--- a/pkgs/applications/video/shotcut/default.nix
+++ b/pkgs/applications/video/shotcut/default.nix
@@ -1,6 +1,8 @@
 { lib
 , fetchFromGitHub
-, mkDerivation
+, stdenv
+, wrapQtAppsHook
+, substituteAll
 , SDL2
 , frei0r
 , ladspaPlugins
@@ -8,72 +10,54 @@
 , mlt
 , jack1
 , pkg-config
+, fftw
 , qtbase
-, qtmultimedia
-, qtx11extras
-, qtwebsockets
-, qtquickcontrols2
-, qtgraphicaleffects
-, qmake
 , qttools
+, qtmultimedia
+, qtcharts
+, cmake
 , gitUpdater
 }:
-
-assert lib.versionAtLeast mlt.version "6.24.0";
-
-mkDerivation rec {
+stdenv.mkDerivation rec {
   pname = "shotcut";
-  version = "21.09.20";
+  version = "23.11.29";
 
   src = fetchFromGitHub {
     owner = "mltframework";
     repo = "shotcut";
     rev = "v${version}";
-    sha256 = "1y46n5gmlayfl46l0vhg5g5dbbc0sg909mxb68sia0clkaas8xrh";
+    hash = "sha256-szWXX/DIJk5ktESgecglptU1qrnrd/u0N6AffwZ5Tos=";
   };
 
-  nativeBuildInputs = [ pkg-config qmake ];
+  nativeBuildInputs = [ pkg-config cmake wrapQtAppsHook ];
   buildInputs = [
     SDL2
     frei0r
     ladspaPlugins
     gettext
     mlt
+    fftw
     qtbase
+    qttools
     qtmultimedia
-    qtx11extras
-    qtwebsockets
-    qtquickcontrols2
-    qtgraphicaleffects
+    qtcharts
   ];
 
-  env.NIX_CFLAGS_COMPILE = "-I${mlt.dev}/include/mlt++ -I${mlt.dev}/include/mlt";
-  qmakeFlags = [
-    "QMAKE_LRELEASE=${lib.getDev qttools}/bin/lrelease"
-    "SHOTCUT_VERSION=${version}"
-    "DEFINES+=SHOTCUT_NOUPGRADE"
+  env.NIX_CFLAGS_COMPILE = "-DSHOTCUT_NOUPGRADE";
+  cmakeFlags = [
+    "-DSHOTCUT_VERSION=${version}"
   ];
 
-  prePatch = ''
-    sed 's_shotcutPath, "melt[^"]*"_"${mlt}/bin/melt"_' -i src/jobs/meltjob.cpp
-    sed 's_shotcutPath, "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/jobs/ffmpegjob.cpp
-    sed 's_qApp->applicationDirPath(), "ffmpeg"_"${mlt.ffmpeg}/bin/ffmpeg"_' -i src/docks/encodedock.cpp
-    NICE=$(type -P nice)
-    sed "s_/usr/bin/nice_''${NICE}_" -i src/jobs/meltjob.cpp src/jobs/ffmpegjob.cpp
-  '';
+  patches = [
+    (substituteAll { inherit mlt; src = ./fix-mlt-ffmpeg-path.patch; })
+  ];
 
   qtWrapperArgs = [
-    "--prefix FREI0R_PATH : ${frei0r}/lib/frei0r-1"
-    "--prefix LADSPA_PATH : ${ladspaPlugins}/lib/ladspa"
-    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [ jack1 SDL2 ]}"
-    "--prefix PATH : ${mlt}/bin"
+    "--set FREI0R_PATH ${frei0r}/lib/frei0r-1"
+    "--set LADSPA_PATH ${ladspaPlugins}/lib/ladspa"
+    "--prefix LD_LIBRARY_PATH : ${lib.makeLibraryPath [jack1 SDL2]}"
   ];
 
-  postInstall = ''
-    mkdir -p $out/share/shotcut
-    cp -r src/qml $out/share/shotcut/
-  '';
-
   passthru.updateScript = gitUpdater {
     rev-prefix = "v";
   };
diff --git a/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch b/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch
new file mode 100644
index 000000000000..fa584162cbe8
--- /dev/null
+++ b/pkgs/applications/video/shotcut/fix-mlt-ffmpeg-path.patch
@@ -0,0 +1,80 @@
+diff --git a/src/docks/encodedock.cpp b/src/docks/encodedock.cpp
+index 3359f676..24e44f98 100644
+--- a/src/docks/encodedock.cpp
++++ b/src/docks/encodedock.cpp
+@@ -2177,7 +2177,7 @@ bool EncodeDock::detectHardwareEncoders()
+ {
+     MAIN.showStatusMessage(tr("Detecting hardware encoders..."));
+     QStringList hwlist;
+-    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
++    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
+     foreach (const QString &codec, codecs()) {
+         LOG_INFO() << "checking for" << codec;
+         QProcess proc;
+@@ -2220,7 +2220,7 @@ bool EncodeDock::detectHardwareEncoders()
+ QString &EncodeDock::defaultFormatExtension()
+ {
+     auto format = ui->formatCombo->currentText();
+-    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
++    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
+     QProcess proc;
+     QStringList args;
+     args << "-hide_banner" << "-h" << format.prepend("muxer=");
+diff --git a/src/jobs/ffmpegjob.cpp b/src/jobs/ffmpegjob.cpp
+index 1f15e647..b6ad6633 100644
+--- a/src/jobs/ffmpegjob.cpp
++++ b/src/jobs/ffmpegjob.cpp
+@@ -54,7 +54,7 @@ FfmpegJob::~FfmpegJob()
+ void FfmpegJob::start()
+ {
+     QString shotcutPath = qApp->applicationDirPath();
+-    QFileInfo ffmpegPath(shotcutPath, "ffmpeg");
++    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
+     setReadChannel(QProcess::StandardError);
+     LOG_DEBUG() << ffmpegPath.absoluteFilePath() + " " + m_args.join(' ');
+     AbstractJob::start(ffmpegPath.absoluteFilePath(), m_args);
+diff --git a/src/jobs/meltjob.cpp b/src/jobs/meltjob.cpp
+index fd8c00b8..9150fe7b 100644
+--- a/src/jobs/meltjob.cpp
++++ b/src/jobs/meltjob.cpp
+@@ -98,9 +98,9 @@ void MeltJob::start()
+     }
+     QString shotcutPath = qApp->applicationDirPath();
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+-    QFileInfo meltPath(shotcutPath, "melt-7");
++    QFileInfo meltPath("@mlt@/bin/melt");
+ #else
+-    QFileInfo meltPath(shotcutPath, "melt");
++    QFileInfo meltPath("@mlt@/bin/melt");
+ #endif
+     setReadChannel(QProcess::StandardError);
+     QStringList args;
+diff --git a/src/mltcontroller.cpp b/src/mltcontroller.cpp
+index 1e2299ac..b8f39f12 100644
+--- a/src/mltcontroller.cpp
++++ b/src/mltcontroller.cpp
+@@ -1555,9 +1555,9 @@ int Controller::checkFile(const QString &path)
+             || path.endsWith(".aep")) {
+         QString shotcutPath = qApp->applicationDirPath();
+ #if defined(Q_OS_UNIX) && !defined(Q_OS_MAC)
+-        QFileInfo meltPath(shotcutPath, "melt-7");
++        QFileInfo meltPath("@mlt@/bin/melt");
+ #else
+-        QFileInfo meltPath(shotcutPath, "melt");
++        QFileInfo meltPath("@mlt@/bin/melt");
+ #endif
+         QStringList args;
+         args << "-quiet" << "-consumer" << "null" << "real_time=0" << "out=0" << "terminate_on_pause=1" <<
+diff --git a/src/widgets/directshowvideowidget.cpp b/src/widgets/directshowvideowidget.cpp
+index c91ba821..73dd5a61 100644
+--- a/src/widgets/directshowvideowidget.cpp
++++ b/src/widgets/directshowvideowidget.cpp
+@@ -35,7 +35,7 @@ DirectShowVideoWidget::DirectShowVideoWidget(QWidget *parent) :
+     ui->setupUi(this);
+     Util::setColorsToHighlight(ui->label);
+ #ifdef Q_OS_WIN
+-    QFileInfo ffmpegPath(qApp->applicationDirPath(), "ffmpeg");
++    QFileInfo ffmpegPath("@ffmpeg@/bin/ffmpeg");
+     QProcess proc;
+     QStringList args;
+     args << "-hide_banner" << "-list_devices" << "true" << "-f" << "dshow" << "-i" << "dummy";
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 274e3bc36e98..383a8deaf6f7 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -34225,7 +34225,7 @@ with pkgs;
 
   shod = callPackage ../applications/window-managers/shod { };
 
-  shotcut = libsForQt5.callPackage ../applications/video/shotcut { };
+  shotcut = qt6Packages.callPackage ../applications/video/shotcut { };
 
   shogun = callPackage ../applications/science/machine-learning/shogun {
     protobuf = protobuf_21;