git.iko.soy/typeable/nixpkgs
on master help sign in
speechd: Fix espeak-mbrola voice check
commit67e5298bfb49471dc4e43a35f4bc97186a120f26 authorJan Tojnar <jtojnar@gmail.com> dateSat 8 Jan 2022, 22:07 (5 years ago) parentb0a4fa5
3 files changed+32
pkgs/applications/audio/espeak-ng/default.nix+4 pkgs/development/libraries/speechd/default.nix+7 pkgs/development/libraries/speechd/fix-mbrola-paths.patch+21
pkgs/applications/audio/espeak-ng/default.nix+4
@@ -45,6 +45,10 @@ stdenv.mkDerivation rec {
4545 patchelf --set-rpath "$(patchelf --print-rpath $out/bin/espeak-ng)" $out/bin/speak-ng
4646 '';
4747
48+ passthru = {
49+ inherit mbrolaSupport;
50+ };
51+
4852 meta = with lib; {
4953 description = "Open source speech synthesizer that supports over 70 languages, based on eSpeak";
5054 homepage = "https://github.com/espeak-ng/espeak-ng";
pkgs/development/libraries/speechd/default.nix+7
@@ -19,6 +19,7 @@
1919, withOss ? false
2020, withFlite ? true, flite
2121, withEspeak ? true, espeak, sonic, pcaudiolib
22+, mbrola
2223, withPico ? true, svox
2324}:
2425
@@ -38,6 +39,12 @@ in stdenv.mkDerivation rec {
3839 src = ./fix-paths.patch;
3940 utillinux = util-linux;
4041 })
42+ ] ++ lib.optionals espeak.mbrolaSupport [
43+ # Replace FHS paths.
44+ (substituteAll {
45+ src = ./fix-mbrola-paths.patch;
46+ inherit espeak mbrola;
47+ })
4148 ];
4249
4350 nativeBuildInputs = [
pkgs/development/libraries/speechd/fix-mbrola-paths.patchnew file+21
@@ -0,0 +1,21 @@
1+diff --git a/src/modules/espeak.c b/src/modules/espeak.c
2+index 94a01197..9bb34475 100644
3+--- a/src/modules/espeak.c
4++++ b/src/modules/espeak.c
5+@@ -898,13 +898,13 @@ static SPDVoice **espeak_list_synthesis_voices()
6+ path = g_strdup_printf("%s/mbrola/%s", espeak_data, voicename);
7+ if (access(path, O_RDONLY) != 0) {
8+ g_free(path);
9+- path = g_strdup_printf("/usr/share/mbrola/%s", voicename);
10++ path = g_strdup_printf("@mbrola@/share/mbrola/%s", voicename);
11+ if (access(path, O_RDONLY) != 0) {
12+ g_free(path);
13+- path = g_strdup_printf("/usr/share/mbrola/%s/%s", voicename, voicename);
14++ path = g_strdup_printf("@mbrola@/share/mbrola/%s/%s", voicename, voicename);
15+ if (access(path, O_RDONLY) != 0) {
16+ g_free(path);
17+- path = g_strdup_printf("/usr/share/mbrola/voices/%s", voicename);
18++ path = g_strdup_printf("@mbrola@/share/mbrola/voices/%s", voicename);
19+ if (access(path, O_RDONLY) != 0) {
20+ g_free(path);
21+ espeak_mbrola[j] = NULL;