diff --git a/pkgs/applications/misc/omorfi/default.nix b/pkgs/development/libraries/omorfi/default.nix similarity index 63% rename from pkgs/applications/misc/omorfi/default.nix rename to pkgs/development/libraries/omorfi/default.nix index 3aafd95ba8a..d6d0f1741d1 100644 --- a/pkgs/applications/misc/omorfi/default.nix +++ b/pkgs/development/libraries/omorfi/default.nix @@ -1,18 +1,15 @@ { lib , stdenv -, autoconf -, automake , autoreconfHook , cg3 , fetchFromGitHub , hfst , hfst-ospell , icu -, libtool , libvoikko +, makeWrapper , pkg-config , python3 -, python3Packages , zip }: @@ -42,30 +39,29 @@ stdenv.mkDerivation (finalAttrs: { python3.pkgs.wrapPython ]; ->>>>>>> 2ea2d99a91e (hfst changes):pkgs/development/libraries/omorfi/default.nix buildInputs = [ - hfst + python3.pkgs.hfst hfst-ospell - python3Packages.hfst-python - icu - ]; - nativeBuildInputs = [ - autoconf - automake - autoreconfHook - cg3 - libtool - pkg-config - python3 libvoikko - zip ]; + + # Supplied pkg-config file doesn't properly expose these propagatedBuildInputs = [ hfst - python3Packages.hfst icu ]; + # Wrap shell scripts so they find the Python scripts + # omorfi.bash inexplicably fails when wrapped + preFixup = '' + wrapPythonProgramsIn "$out/bin" "$out ${python3.pkgs.hfst}" + for i in "$out/bin"/*.{sh,bash}; do + if [ $(basename "$i") != "omorfi.bash" ]; then + wrapProgram "$i" --prefix "PATH" : "$out/bin/" + fi + done + ''; + # Enable all features configureFlags = [ "--enable-labeled-segments" @@ -74,22 +70,12 @@ stdenv.mkDerivation (finalAttrs: { "--enable-hyphenator" ]; - # Fix for omorfi-hyphenate.sh file not found error - postInstall = '' - mv $out/share/omorfi/omorfi.hyphenate-rules.hfst $out/share/omorfi/omorfi.hyphenate.hfst - ''; - - src = fetchFromGitHub { - owner = "flammie"; - repo = "omorfi"; - rev = "refs/tags/v${version}"; - hash = "sha256-UoqdwNWCNOPX6u1YBlnXUcB/fmcvcy/HXbYciVrMBOY="; - }; - meta = with lib; { description = "Analysis for Finnish text"; homepage = "https://github.com/flammie/omorfi"; license = licenses.gpl3; maintainers = with maintainers; [ lurkki ]; + # Darwin build fails due to hfst not being found + broken = stdenv.isDarwin; }; }) diff --git a/pkgs/development/python-modules/omorfi/default.nix b/pkgs/development/python-modules/omorfi/default.nix new file mode 100644 index 00000000000..6bbe964de73 --- /dev/null +++ b/pkgs/development/python-modules/omorfi/default.nix @@ -0,0 +1,32 @@ +{ buildPythonPackage +, pkgs +, lib +, stdenv +, hfst +}: + +buildPythonPackage rec { + pname = "omorfi"; + inherit (pkgs.omorfi) src version; + + sourceRoot = "${src.name}/src/python"; + + propagatedBuildInputs = [ + hfst + ]; + + # Fixes some improper import paths + patches = [ ./importfix.patch ]; + + # Apply patch relative to source/src + patchFlags = [ "-p3" ]; + + meta = with lib; { + description = "Python interface for Omorfi"; + homepage = "https://github.com/flammie/omorfi"; + license = licenses.gpl3; + maintainers = with maintainers; [ lurkki ]; + # Ofborg build error (hfst not found?) + broken = stdenv.isDarwin; + }; +} diff --git a/pkgs/development/python-modules/omorfi/importfix.patch b/pkgs/development/python-modules/omorfi/importfix.patch new file mode 100644 index 00000000000..67a54363c7b --- /dev/null +++ b/pkgs/development/python-modules/omorfi/importfix.patch @@ -0,0 +1,76 @@ +diff --git a/src/python/omorfi/entryguessing/gradation.py b/src/python/omorfi/entryguessing/gradation.py +index 7d3ed8cb..825d7ead 100755 +--- a/src/python/omorfi/entryguessing/gradation.py ++++ b/src/python/omorfi/entryguessing/gradation.py +@@ -17,8 +17,8 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see . + +-from .omorfi.error_logging import fail_guess_because +-from .omorfi.string_mangling import replace_rightmost, replace_rightmosts ++from omorfi.error_logging import fail_guess_because ++from omorfi.string_manglers import replace_rightmost, replace_rightmosts + + + def gradation_make_morphophonemes(wordmap): +diff --git a/src/python/omorfi/entryguessing/guess_new_class.py b/src/python/omorfi/entryguessing/guess_new_class.py +index 1884716b..3a781bfc 100755 +--- a/src/python/omorfi/entryguessing/guess_new_class.py ++++ b/src/python/omorfi/entryguessing/guess_new_class.py +@@ -17,8 +17,8 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see . + +-from .error_logging import fail_guess_because +-from .string_manglers import three_syllable ++from omorfi.error_logging import fail_guess_because ++from omorfi.string_manglers import three_syllable + + + def guess_new_class(wordmap): +diff --git a/src/python/omorfi/entryguessing/plurale_tantum.py b/src/python/omorfi/entryguessing/plurale_tantum.py +index a8af81fb..95fc4b7b 100755 +--- a/src/python/omorfi/entryguessing/plurale_tantum.py ++++ b/src/python/omorfi/entryguessing/plurale_tantum.py +@@ -17,8 +17,8 @@ + # You should have received a copy of the GNU General Public License + # along with this program. If not, see . + +-from .error_logging import fail_guess_because +-from .omorfi.string_manglers import replace_rightmost, replace_rightmosts ++from omorfi.error_logging import fail_guess_because ++from omorfi.string_manglers import replace_rightmost, replace_rightmosts + + + def plurale_tantum_get_singular_stem(wordmap): +diff --git a/src/python/omorfi/formats/experimental_xml_formatter.py b/src/python/omorfi/formats/experimental_xml_formatter.py +index abccbff5..11b0f518 100755 +--- a/src/python/omorfi/formats/experimental_xml_formatter.py ++++ b/src/python/omorfi/formats/experimental_xml_formatter.py +@@ -19,9 +19,9 @@ + + from xml.sax.saxutils import escape as xml_escape + +-from ftb3_formatter import Ftb3Formatter ++from .ftb3_formatter import Ftb3Formatter + +-from .settings import version_id_easter_egg ++from omorfi.settings import version_id_easter_egg + + + def make_xmlid(s): +diff --git a/src/python/omorfi/formats/lexc_formatter.py b/src/python/omorfi/formats/lexc_formatter.py +index 4ec616b7..b146129f 100755 +--- a/src/python/omorfi/formats/lexc_formatter.py ++++ b/src/python/omorfi/formats/lexc_formatter.py +@@ -19,8 +19,8 @@ + + # functions for formatting the database data to lexc + +-from .settings import deriv_boundary, morph_boundary, newword_boundary, optional_hyphen, stub_boundary, word_boundary +-from .string_manglers import lexc_escape ++from omorfi.settings import deriv_boundary, morph_boundary, newword_boundary, optional_hyphen, stub_boundary, word_boundary ++from omorfi.string_manglers import lexc_escape + + + def format_copyright_lexc(): diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index f40c9350352..53e82aa5d12 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -41280,15 +41280,15 @@ with pkgs; charasay = callPackage ../tools/misc/charasay { }; - waylyrics = callPackage ../applications/audio/waylyrics { }; - - gitrs = callPackage ../tools/misc/gitrs { }; - libvoikko = callPackage ../development/libraries/libvoikko { }; hfst = callPackage ../development/libraries/hfst { }; - omorfi = callPackage ../applications/misc/omorfi { }; + omorfi = callPackage ../development/libraries/omorfi { }; hfst-ospell = callPackage ../development/libraries/hfst-ospell { }; + + waylyrics = callPackage ../applications/audio/waylyrics { }; + + gitrs = callPackage ../tools/misc/gitrs { }; } diff --git a/pkgs/top-level/python-packages.nix b/pkgs/top-level/python-packages.nix index 17339de0031..0ec5788a212 100644 --- a/pkgs/top-level/python-packages.nix +++ b/pkgs/top-level/python-packages.nix @@ -7155,6 +7155,8 @@ self: super: with self; { omnilogic = callPackage ../development/python-modules/omnilogic { }; + omorfi = callPackage ../development/python-modules/omorfi { }; + omrdatasettools = callPackage ../development/python-modules/omrdatasettools { }; ondilo = callPackage ../development/python-modules/ondilo { };