kdenlive: Avoid exposing configurable paths to melt

kdenlive's configuration stores two paths to the `mlt` package. These
may be set in the GUI under `Settings -> Configure Kdenlive ->
Environment`, and are persisted in $XDG_CONFIG_HOME/.kdenliverc

A problem I encountered was `kdenlive` holding on to old `mlt` paths
in these settings after a nixpkgs update, causing video rendering to fail.

The C++ class kdenlive uses for these settings is automatically
generated, so what this patch does is edit the declaration of the
relevant settings to provide default values with the absolute path of
`mlt` known at build time, and mark those settings as hidden.

In testing, I've found that changing `mlt` and rebuilding `kdenlive`
causes updated paths to appear in the GUI, and no entries to be added
to the kdenliverc file.

A shortcoming of this patch is that existing users will already have paths
stored in their `kdenliverc` files that can cause trouble. The hope is
that an approach like the one taken here will reduce this sort
of breakage moving forward.
gstqt5
Anthony Cowley 2019-09-10 23:42:40 -04:00
parent e19054ab3c
commit 7810dcbd7b
2 changed files with 25 additions and 0 deletions

View File

@ -70,10 +70,13 @@ mkDerivation {
kpurpose
kdeclarative
];
patches = [ ./mlt-path.patch ];
inherit mlt;
postPatch =
# Module Qt5::Concurrent must be included in `find_package` before it is used.
''
sed -i CMakeLists.txt -e '/find_package(Qt5 REQUIRED/ s|)| Concurrent)|'
substituteAllInPlace src/kdenlivesettings.kcfg
'';
meta = {
license = with lib.licenses; [ gpl2Plus ];

View File

@ -0,0 +1,22 @@
diff -ruN old/src/kdenlivesettings.kcfg new/src/kdenlivesettings.kcfg
--- old/src/kdenlivesettings.kcfg 2019-09-10 23:20:27.555392353 -0400
+++ new/src/kdenlivesettings.kcfg 2019-09-10 23:25:47.533964155 -0400
@@ -378,14 +378,14 @@
</group>
<group name="env">
- <entry name="mltpath" type="Path">
+ <entry name="mltpath" type="Path" hidden="true">
<label>Mlt framework install path.</label>
- <default></default>
+ <default>@mlt@/share/mlt/profiles</default>
</entry>
- <entry name="rendererpath" type="Path">
+ <entry name="rendererpath" type="Path" hidden="true">
<label>Mlt melt renderer install path.</label>
- <default></default>
+ <default>@mlt@/bin/melt</default>
</entry>
<entry name="ffmpegpath" type="Path">