libreoffice: fix Exec= in .desktop files

Before we do substitutions, the Exec= line is (currently)
"Exec=libreofficedev4.3 --some-arg". Our substitution logic doesn't handle
that, resulting in broken "Exec=$out/bin/sofficedev4.3 --some-arg"
($out/bin/sofficedev4.3 doesn't exist).

Looking at libreoffice source, the .desktop files refer to a UNIXBASISROOTNAME
variable which come from instsetoo_native/util/openoffice.lst.in. Currently, it
can have one of two values, presumably depending on whether the build is
"normal" or "development":

  libreoffice${major}.${minor}

  libreofficedev${major}.${minor}

Handle both these cases, and also leave the old non-versioned substitution
around, just in case.

Fixes issue #3463.
This commit is contained in:
Bjørn Forsman 2014-12-14 18:05:08 +01:00
parent 6221af50c4
commit 64661f0597

View File

@ -176,7 +176,8 @@ stdenv.mkDerivation rec {
ln -s $out/lib/libreoffice/share/xdg $out/share/applications
for f in $out/share/applications/*.desktop; do
substituteInPlace "$f" --replace "Exec=libreoffice4.0" "Exec=$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreofficedev${major}.${minor}" "Exec=$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreoffice${major}.${minor}" "Exec=$out/bin/soffice"
substituteInPlace "$f" --replace "Exec=libreoffice" "Exec=$out/bin/soffice"
done
'';