Merge pull request #172274 from dotlambda/phonemizer-fix

python3Packages.phonemizer: fix build
main
Thiago Kenji Okada 2 years ago committed by GitHub
commit b2ab748771
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 37
      pkgs/development/python-modules/dlinfo/default.nix
  2. 56
      pkgs/development/python-modules/phonemizer/backend-paths.patch
  3. 22
      pkgs/development/python-modules/phonemizer/default.nix
  4. 12
      pkgs/development/python-modules/phonemizer/drop-readme-festival-test.patch
  5. 103
      pkgs/development/python-modules/phonemizer/remove-intertwined-festival-test.patch
  6. 2
      pkgs/top-level/python-packages.nix

@ -0,0 +1,37 @@
{ lib
, stdenv
, buildPythonPackage
, fetchPypi
, setuptools-scm
, pytestCheckHook
}:
buildPythonPackage rec {
pname = "dlinfo";
version = "1.2.1";
format = "setuptools";
src = fetchPypi {
inherit pname version;
sha256 = "5f6f43b47f3aa5fe12bd347cf536dc8fca6068c61a0a260e408bec7f6eb4bd38";
};
nativeBuildInputs = [
setuptools-scm
];
checkInputs = [
pytestCheckHook
];
pythonImportsCheck = [ "dlinfo" ];
meta = {
description = "Python wrapper for libc's dlinfo and dyld_find on Mac";
homepage = "https://github.com/cloudflightio/python-dlinfo";
license = lib.licenses.mit;
maintainers = with lib.maintainers; [ dotlambda ];
broken = stdenv.isDarwin;
};
}

@ -1,42 +1,18 @@
diff --git a/phonemizer/backend/espeak.py b/phonemizer/backend/espeak.py
index b4712bf..5628fd5 100644
--- a/phonemizer/backend/espeak.py
+++ b/phonemizer/backend/espeak.py
@@ -82,10 +82,7 @@ class BaseEspeakBackend(BaseBackend):
if _ESPEAK_DEFAULT_PATH:
return _ESPEAK_DEFAULT_PATH
diff --git a/phonemizer/backend/espeak/wrapper.py b/phonemizer/backend/espeak/wrapper.py
index 84a79f5..8abcae1 100644
--- a/phonemizer/backend/espeak/wrapper.py
+++ b/phonemizer/backend/espeak/wrapper.py
@@ -143,12 +143,7 @@ class EspeakWrapper:
f'is not a readable file')
return library.resolve()
- espeak = distutils.spawn.find_executable('espeak-ng')
- if not espeak: # pragma: nocover
- espeak = distutils.spawn.find_executable('espeak')
- return espeak
+ return "@espeak@"
- library = (
- ctypes.util.find_library('espeak-ng') or
- ctypes.util.find_library('espeak'))
- if not library: # pragma: nocover
- raise RuntimeError(
- 'failed to find espeak library')
+ library = '@libespeak@'
return library
@classmethod
def is_available(cls):
diff --git a/phonemizer/backend/festival.py b/phonemizer/backend/festival.py
index 3037be5..684ffff 100644
--- a/phonemizer/backend/festival.py
+++ b/phonemizer/backend/festival.py
@@ -80,7 +80,7 @@ class FestivalBackend(BaseBackend):
if _FESTIVAL_DEFAULT_PATH:
return _FESTIVAL_DEFAULT_PATH
- return distutils.spawn.find_executable('festival')
+ return "@festival@"
@classmethod
def is_available(cls):
diff --git a/test/test_punctuation.py b/test/test_punctuation.py
index 6ed642a..08060df 100644
--- a/test/test_punctuation.py
+++ b/test/test_punctuation.py
@@ -28,7 +28,7 @@ ESPEAK_143 = (EspeakBackend.version(as_tuple=True) >= (1, 49, 3))
ESPEAK_150 = (EspeakBackend.version(as_tuple=True) >= (1, 50))
# True if we are using festival>=2.5
-FESTIVAL_25 = (FestivalBackend.version(as_tuple=True) >= (2, 5))
+FESTIVAL_25 = False
@pytest.mark.parametrize(
def _fetch_version_and_path(self):

@ -1,10 +1,13 @@
{ lib
, stdenv
, substituteAll
, buildPythonApplication
, fetchPypi
, joblib
, segments
, attrs
, dlinfo
, typing-extensions
, espeak-ng
, pytestCheckHook
, pytest-cov
@ -26,9 +29,8 @@ buildPythonApplication rec {
patches = [
(substituteAll {
src = ./backend-paths.patch;
espeak = "${lib.getBin espeak-ng}/bin/espeak";
# override festival path should you try to integrate it
festival = "";
libespeak = "${lib.getLib espeak-ng}/lib/libespeak-ng${stdenv.hostPlatform.extensions.sharedLibrary}";
# FIXME package festival
})
./remove-intertwined-festival-test.patch
];
@ -37,6 +39,8 @@ buildPythonApplication rec {
joblib
segments
attrs
dlinfo
typing-extensions
];
preCheck = ''
@ -45,26 +49,26 @@ buildPythonApplication rec {
checkInputs = [
pytestCheckHook
pytest-cov
];
# We tried to package festvial, but were unable to get the backend running,
# so let's disable related tests.
pytestFlagsArray = [
"--ignore=test/test_festival.py"
disabledTestPaths = [
"test/test_festival.py"
];
disabledTests = [
"test_festival"
"test_relative"
"test_absolute"
"test_festival_path"
"test_readme_festival_syll"
"test_unicode"
];
meta = with lib; {
homepage = "https://github.com/bootphon/phonemizer";
changelog = "https://github.com/bootphon/phonemizer/blob/v${version}/CHANGELOG.md";
description = "Simple text to phones converter for multiple languages";
license = licenses.gpl3;
license = licenses.gpl3Plus;
maintainers = with maintainers; [ ];
};
}

@ -1,12 +0,0 @@
diff --git a/test/test_main.py b/test/test_main.py
index 71d605a..d137cd7 100644
--- a/test/test_main.py
+++ b/test/test_main.py
@@ -63,7 +63,6 @@ def test_readme():
_test(u'hello world', u'həloʊ wɜːld ')
_test(u'hello world', u'həloʊ wɜːld ', '--verbose')
_test(u'hello world', u'həloʊ wɜːld ', '--quiet')
- _test(u'hello world', u'hhaxlow werld', '-b festival --strip')
_test(u'hello world', u'həloʊ wɜːld ', '-l en-us')
_test(u'bonjour le monde', u'bɔ̃ʒuʁ lə mɔ̃d ', '-l fr-fr')
_test(u'bonjour le monde', u'b ɔ̃ ʒ u ʁ ;eword l ə ;eword m ɔ̃ d ;eword ',

@ -1,15 +1,14 @@
diff --git a/test/test_main.py b/test/test_main.py
index 71d605a..0ea3c74 100644
index b8c53e9..8f8c6d2 100644
--- a/test/test_main.py
+++ b/test/test_main.py
@@ -63,17 +63,12 @@ def test_readme():
_test(u'hello world', u'həloʊ wɜːld ')
_test(u'hello world', u'həloʊ wɜːld ', '--verbose')
_test(u'hello world', u'həloʊ wɜːld ', '--quiet')
- _test(u'hello world', u'hhaxlow werld', '-b festival --strip')
_test(u'hello world', u'həloʊ wɜːld ', '-l en-us')
_test(u'bonjour le monde', u'bɔ̃ʒuʁ lə mɔ̃d ', '-l fr-fr')
_test(u'bonjour le monde', u'b ɔ̃ ʒ u ʁ ;eword l ə ;eword m ɔ̃ d ;eword ',
@@ -68,16 +68,11 @@ def test_readme():
_test('hello world', 'həloʊ wɜːld ', '--verbose')
_test('hello world', 'həloʊ wɜːld ', '--quiet')
_test('hello world', 'hello world | həloʊ wɜːld ', '--prepend-text')
- _test('hello world', 'hhaxlow werld', '-b festival --strip')
_test('bonjour le monde', 'bɔ̃ʒuʁ lə mɔ̃d ', '-l fr-fr')
_test('bonjour le monde', 'b ɔ̃ ʒ u ʁ ;eword l ə ;eword m ɔ̃ d ;eword ',
'-l fr-fr -p " " -w ";eword "')
@ -18,5 +17,87 @@ index 71d605a..0ea3c74 100644
- reason='festival-2.1 gives different results than further versions '
- 'for syllable boundaries')
def test_readme_festival_syll():
_test(u'hello world',
u'hh ax ;esyll l ow ;esyll ;eword w er l d ;esyll ;eword ',
_test('hello world',
'hh ax ;esyll l ow ;esyll ;eword w er l d ;esyll ;eword ',
diff --git a/test/test_phonemize.py b/test/test_phonemize.py
index d156c9e..2bbe371 100644
--- a/test/test_phonemize.py
+++ b/test/test_phonemize.py
@@ -213,18 +213,6 @@ def test_segments(njobs):
('segments', True, True, False,
['achi acho?', '', 'achi acho'],
[u'ʌtʃɪ ʌtʃʊ?', '', u'ʌtʃɪ ʌtʃʊ ']),
- ('festival', False, False, False,
- ['hello world!', '', 'goodbye'],
- ['hhaxlow werld ', 'guhdbay ']),
- ('festival', False, True, False,
- ['hello world!', '', 'goodbye'],
- ['hhaxlow werld!', 'guhdbay ']),
- ('festival', True, False, False,
- ['hello world!', '', 'goodbye'],
- ['hhaxlow werld ', '', 'guhdbay ']),
- ('festival', True, True, False,
- ['hello world!', '', 'goodbye'],
- ['hhaxlow werld!', '', 'guhdbay ']),
('espeak', False, False, True,
['hello world!', '', 'goodbye'],
[('hello world!', 'həloʊ wɜːld '), ('goodbye', 'ɡʊdbaɪ ')]),
@@ -248,19 +236,7 @@ def test_segments(njobs):
[('achi acho?', u'ʌtʃɪ ʌtʃʊ '), ('', ''), ('achi acho', u'ʌtʃɪ ʌtʃʊ ')]),
('segments', True, True, True,
['achi acho?', '', 'achi acho'],
- [('achi acho?', u'ʌtʃɪ ʌtʃʊ?'), ('', ''), ('achi acho', u'ʌtʃɪ ʌtʃʊ ')]),
- ('festival', False, False, True,
- ['hello world!', '', 'goodbye'],
- [('hello world!', 'hhaxlow werld '), ('goodbye', 'guhdbay ')]),
- ('festival', False, True, True,
- ['hello world!', '', 'goodbye'],
- [('hello world!', 'hhaxlow werld!'), ('goodbye', 'guhdbay ')]),
- ('festival', True, False, True,
- ['hello world!', '', 'goodbye'],
- [('hello world!', 'hhaxlow werld '), ('', ''), ('goodbye', 'guhdbay ')]),
- ('festival', True, True, True,
- ['hello world!', '', 'goodbye'],
- [('hello world!', 'hhaxlow werld!'), ('', ''), ('goodbye', 'guhdbay ')])])
+ [('achi acho?', u'ʌtʃɪ ʌtʃʊ?'), ('', ''), ('achi acho', u'ʌtʃɪ ʌtʃʊ ')])])
def test_preserve_empty_lines(backend, empty_lines, punctuation, prepend_text, text, expected):
language = 'cree' if backend == 'segments' else 'en-us'
@@ -278,11 +254,7 @@ def test_preserve_empty_lines(backend, empty_lines, punctuation, prepend_text, t
('segments', False, False, [''], []),
('segments', False, True, [''], []),
('segments', True, False, [''], ['']),
- ('segments', True, True, [''], ['']),
- ('festival', False, False, [''], []),
- ('festival', False, True, [''], []),
- ('festival', True, False, [''], ['']),
- ('festival', True, True, [''], [''])])
+ ('segments', True, True, [''], [''])])
def test_empty_input(backend, empty_lines, punctuation, text, expected):
language = 'cree' if backend == 'segments' else 'en-us'
diff --git a/test/test_punctuation.py b/test/test_punctuation.py
index b2206ac..62e31c1 100644
--- a/test/test_punctuation.py
+++ b/test/test_punctuation.py
@@ -28,9 +28,6 @@ ESPEAK_150 = (EspeakBackend.version() >= (1, 50))
# True if we are using espeak>=1.49.3
ESPEAK_143 = (EspeakBackend.version() >= (1, 49, 3))
-# True if we are using festival>=2.5
-FESTIVAL_25 = (FestivalBackend.version() >= (2, 5))
-
@pytest.mark.parametrize(
'inp, out', [
@@ -179,9 +176,7 @@ def test_issue_54(text):
('espeak', 'default', ['! ?', 'hey!'], ['! ?', 'heɪ!']),
('espeak', '!', ['! ?', 'hey!'], ['! ', 'heɪ!']),
('segments', 'default', ['! ?', 'hey!'], ['! ?', 'heːj!']),
- ('segments', '!', ['! ?', 'hey!'], ValueError),
- ('festival', 'default', ['! ?', 'hey!'], ['! ?', 'hhey!']),
- ('festival', '!', ['! ?', 'hey!'], ['! ', 'hhey!'])])
+ ('segments', '!', ['! ?', 'hey!'], ValueError)])
def test_issue55(backend, marks, text, expected):
if marks == 'default':
marks = Punctuation.default_marks()

@ -2432,6 +2432,8 @@ in {
inherit (pkgs) dlib;
};
dlinfo = callPackage ../development/python-modules/dlinfo { };
dlx = callPackage ../development/python-modules/dlx { };
dmenu-python = callPackage ../development/python-modules/dmenu { };

Loading…
Cancel
Save