summary refs log tree commit diff
path: root/pkgs
diff options
context:
space:
mode:
authorJan Tojnar <jtojnar@gmail.com>2022-01-09 19:46:55 +0100
committerGitHub <noreply@github.com>2022-01-09 19:46:55 +0100
commite478c0004507810d8c165baf0c4f95c739d21839 (patch)
treeb6fd710de570317bf27fb69bf9ad0fae500a4887 /pkgs
parentf7fba6ae71166c812ea88c1ed72bcd16b95ee231 (diff)
parent67e5298bfb49471dc4e43a35f4bc97186a120f26 (diff)
downloadnixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar.gz
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar.bz2
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar.lz
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar.xz
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.tar.zst
nixpkgs-e478c0004507810d8c165baf0c4f95c739d21839.zip
Merge pull request #154050 from jtojnar/speechd
speechd: 0.10.2 → 0.11.0
Diffstat (limited to 'pkgs')
-rw-r--r--pkgs/applications/audio/espeak-ng/default.nix4
-rw-r--r--pkgs/development/libraries/speechd/default.nix80
-rw-r--r--pkgs/development/libraries/speechd/fix-mbrola-paths.patch21
3 files changed, 61 insertions, 44 deletions
diff --git a/pkgs/applications/audio/espeak-ng/default.nix b/pkgs/applications/audio/espeak-ng/default.nix
index e0f7822bcd7..6458d7188ae 100644
--- a/pkgs/applications/audio/espeak-ng/default.nix
+++ b/pkgs/applications/audio/espeak-ng/default.nix
@@ -45,6 +45,10 @@ stdenv.mkDerivation rec {
     patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
   '';
 
+  passthru = {
+    inherit mbrolaSupport;
+  };
+
   meta = with lib; {
     description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
     homepage = "https://github.com/espeak-ng/espeak-ng";
diff --git a/pkgs/development/libraries/speechd/default.nix b/pkgs/development/libraries/speechd/default.nix
index 80034a5a9cf..270894c3e55 100644
--- a/pkgs/development/libraries/speechd/default.nix
+++ b/pkgs/development/libraries/speechd/default.nix
@@ -1,8 +1,8 @@
-{ lib, stdenv
+{ stdenv
+, lib
 , substituteAll
 , pkg-config
 , fetchurl
-, fetchpatch
 , python3Packages
 , gettext
 , itstool
@@ -18,33 +18,20 @@
 , withAlsa ? false, alsa-lib
 , withOss ? false
 , withFlite ? true, flite
-# , withFestival ? false, festival-freebsoft-utils
 , withEspeak ? true, espeak, sonic, pcaudiolib
+, mbrola
 , withPico ? true, svox
-# , withIvona ? false, libdumbtts
 }:
 
 let
-  inherit (lib) optional optionals;
   inherit (python3Packages) python pyxdg wrapPython;
-
-  # speechd hard-codes espeak, even when built without support for it.
-  selectedDefaultModule =
-    if withEspeak then
-      "espeak-ng"
-    else if withPico then
-      "pico"
-    else if withFlite then
-      "flite"
-    else
-      throw "You need to enable at least one output module.";
 in stdenv.mkDerivation rec {
   pname = "speech-dispatcher";
-  version = "0.10.2";
+  version = "0.11.1";
 
   src = fetchurl {
     url = "https://github.com/brailcom/speechd/releases/download/${version}/${pname}-${version}.tar.gz";
-    sha256 = "sha256-sGMZ8gHhXlbGKWZTr1vPwwDLNI6XLVF9+LBurHfq4tw=";
+    sha256 = "sha256-0doS7T2shPE3mbai7Dm6LTyiGoST9E3BhVvQupbC3cY=";
   };
 
   patches = [
@@ -52,12 +39,11 @@ in stdenv.mkDerivation rec {
       src = ./fix-paths.patch;
       utillinux = util-linux;
     })
-
-    # Fix build with Glib 2.68
-    # https://github.com/brailcom/speechd/pull/462
-    (fetchpatch {
-      url = "https://github.com/brailcom/speechd/commit/a2faab416e42cbdf3d73f98578a89eb7a235e25a.patch";
-      sha256 = "8Q7tUdKKBBtgXZZnj59OcJOkrCNeBR9gkBjhKlpW0hQ=";
+  ] ++ lib.optionals espeak.mbrolaSupport [
+    # Replace FHS paths.
+    (substituteAll {
+      src = ./fix-mbrola-paths.patch;
+      inherit espeak mbrola;
     })
   ];
 
@@ -79,36 +65,39 @@ in stdenv.mkDerivation rec {
     libpulseaudio
     alsa-lib
     python
-  ] ++ optionals withEspeak [
+  ] ++ lib.optionals withEspeak [
     espeak
     sonic
     pcaudiolib
-  ] ++ optional withFlite flite
-    ++ optional withPico svox
-    # TODO: add flint/festival support with festival-freebsoft-utils package
-    # ++ optional withFestival festival-freebsoft-utils
-    # TODO: add Ivona support with libdumbtts package
-    # ++ optional withIvona libdumbtts
-  ;
+  ] ++ lib.optional withFlite [
+    flite
+  ] ++ lib.optional withPico [
+    svox
+  ];
 
-  pythonPath = [ pyxdg ];
+  pythonPath = [
+    pyxdg
+  ];
 
   configureFlags = [
     # Audio method falls back from left to right.
     "--with-default-audio-method=\"libao,pulse,alsa,oss\""
     "--with-systemdsystemunitdir=${placeholder "out"}/lib/systemd/system"
-  ] ++ optional withPulse "--with-pulse"
-    ++ optional withAlsa "--with-alsa"
-    ++ optional withLibao "--with-libao"
-    ++ optional withOss "--with-oss"
-    ++ optional withEspeak "--with-espeak-ng"
-    ++ optional withPico "--with-pico"
-    # ++ optional withFestival "--with-flint"
-    # ++ optional withIvona "--with-ivona"
-  ;
+  ] ++ lib.optional withPulse [
+  "--with-pulse"
+  ] ++ lib.optional withAlsa [
+    "--with-alsa"
+  ] ++ lib.optional withLibao [
+    "--with-libao"
+  ] ++ lib.optional withOss [
+    "--with-oss"
+  ] ++ lib.optional withEspeak [
+    "--with-espeak-ng"
+  ] ++ lib.optional withPico [
+    "--with-pico"
+  ];
 
   postPatch = ''
-    substituteInPlace config/speechd.conf --replace "DefaultModule espeak" "DefaultModule ${selectedDefaultModule}"
     substituteInPlace src/modules/pico.c --replace "/usr/share/pico/lang" "${svox}/share/pico/lang"
   '';
 
@@ -122,7 +111,10 @@ in stdenv.mkDerivation rec {
     description = "Common interface to speech synthesis";
     homepage = "https://devel.freebsoft.org/speechd";
     license = licenses.gpl2Plus;
-    maintainers = with maintainers; [ berce ];
+    maintainers = with maintainers; [
+      berce
+      jtojnar
+    ];
     platforms = platforms.linux;
   };
 }
diff --git a/pkgs/development/libraries/speechd/fix-mbrola-paths.patch b/pkgs/development/libraries/speechd/fix-mbrola-paths.patch
new file mode 100644
index 00000000000..ea16bea9bac
--- /dev/null
+++ b/pkgs/development/libraries/speechd/fix-mbrola-paths.patch
@@ -0,0 +1,21 @@
+diff --git a/src/modules/espeak.c b/src/modules/espeak.c
+index 94a01197..9bb34475 100644
+--- a/src/modules/espeak.c
++++ b/src/modules/espeak.c
+@@ -898,13 +898,13 @@ static SPDVoice **espeak_list_synthesis_voices()
+ 				path = g_strdup_printf("%s/mbrola/%s", espeak_data, voicename);
+ 				if (access(path, O_RDONLY) != 0) {
+ 					g_free(path);
+-					path = g_strdup_printf("/usr/share/mbrola/%s", voicename);
++					path = g_strdup_printf("@mbrola@/share/mbrola/%s", voicename);
+ 					if (access(path, O_RDONLY) != 0) {
+ 						g_free(path);
+-						path = g_strdup_printf("/usr/share/mbrola/%s/%s", voicename, voicename);
++						path = g_strdup_printf("@mbrola@/share/mbrola/%s/%s", voicename, voicename);
+ 						if (access(path, O_RDONLY) != 0) {
+ 							g_free(path);
+-							path = g_strdup_printf("/usr/share/mbrola/voices/%s", voicename);
++							path = g_strdup_printf("@mbrola@/share/mbrola/voices/%s", voicename);
+ 							if (access(path, O_RDONLY) != 0) {
+ 								g_free(path);
+ 								espeak_mbrola[j] = NULL;