diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/.gitignore b/.gitignore index 47157fc..088efb4 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1 @@ -/v1.5.4.tar.gz +/hunspell-1.7.2.tar.gz diff --git a/0001-Resolves-rhbz-2158548-allow-longer-words-for-hunspel.patch b/0001-Resolves-rhbz-2158548-allow-longer-words-for-hunspel.patch new file mode 100644 index 0000000..c0225fb --- /dev/null +++ b/0001-Resolves-rhbz-2158548-allow-longer-words-for-hunspel.patch @@ -0,0 +1,77 @@ +From e2fe9f86e1769b440972971240e9b8fb1cd53b97 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 6 Jan 2023 16:20:45 +0000 +Subject: [PATCH] Resolves: rhbz#2158548 allow longer words for hunspell-ko +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +https://github.com/hunspell/hunspell/issues/903 + +A problem since the sanity check added in: + +commit 05e44e069e4cfaa9ce1264bf13f23fc9abd7ed05 +Author: Caolán McNamara +Date: Thu Sep 1 13:46:40 2022 +0100 + + Check word limit (#813) + + * check against hentry blen max +--- + src/hunspell/hashmgr.cxx | 6 +++--- + src/hunspell/htypes.hxx | 4 ++-- + tests/korean.dic | 3 ++- + 3 files changed, 7 insertions(+), 6 deletions(-) + +diff --git a/src/hunspell/hashmgr.cxx b/src/hunspell/hashmgr.cxx +index 100916d..14201e9 100644 +--- a/src/hunspell/hashmgr.cxx ++++ b/src/hunspell/hashmgr.cxx +@@ -209,7 +209,7 @@ int HashMgr::add_word(const std::string& in_word, + } + + // limit of hp->blen +- if (word->size() > std::numeric_limits::max()) { ++ if (word->size() > std::numeric_limits::max()) { + HUNSPELL_WARNING(stderr, "error: word len %ld is over max limit\n", word->size()); + delete desc_copy; + delete word_copy; +@@ -235,8 +235,8 @@ int HashMgr::add_word(const std::string& in_word, + + int i = hash(hpw, word->size()); + +- hp->blen = (unsigned char)word->size(); +- hp->clen = (unsigned char)wcl; ++ hp->blen = (unsigned short)word->size(); ++ hp->clen = (unsigned short)wcl; + hp->alen = (short)al; + hp->astr = aff; + hp->next = NULL; +diff --git a/src/hunspell/htypes.hxx b/src/hunspell/htypes.hxx +index 44366b1..2b896fb 100644 +--- a/src/hunspell/htypes.hxx ++++ b/src/hunspell/htypes.hxx +@@ -62,8 +62,8 @@ + #endif + + struct hentry { +- unsigned char blen; // word length in bytes +- unsigned char clen; // word length in characters (different for UTF-8 enc.) ++ unsigned short blen; // word length in bytes ++ unsigned short clen; // word length in characters (different for UTF-8 enc.) + short alen; // length of affix flag vector + unsigned short* astr; // affix flag vector + struct hentry* next; // next word with same hash code +diff --git a/tests/korean.dic b/tests/korean.dic +index 95cb450..d76ea05 100644 +--- a/tests/korean.dic ++++ b/tests/korean.dic +@@ -1,3 +1,4 @@ +-2 ++3 + 들어오세요 + 안녕하세요 ++김수한무거북이와두루미삼천갑자동방삭치치카포사리사리세ᅡ워리워리세브리캉무드셀ᅡ구름위허ᅵ케ᅵᆫᅦ담벼락서생원에ᄀ양 +-- +2.38.1 + diff --git a/0001-coverity-173065-Resource-leak.patch b/0001-coverity-173065-Resource-leak.patch deleted file mode 100644 index aedec7a..0000000 --- a/0001-coverity-173065-Resource-leak.patch +++ /dev/null @@ -1,43 +0,0 @@ -From 47ed203d1f58157a8e8c5cce51bfa2094018f847 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Wed, 7 Dec 2016 16:24:58 +0000 -Subject: [PATCH] coverity#173065 Resource leak - ---- - src/tools/hunspell.cxx | 14 +++++++------- - 1 file changed, 7 insertions(+), 7 deletions(-) - -diff --git a/src/tools/hunspell.cxx b/src/tools/hunspell.cxx -index 6345cad..3a037b3 100644 ---- a/src/tools/hunspell.cxx -+++ b/src/tools/hunspell.cxx -@@ -1131,19 +1131,19 @@ void dialogscreen(TextParser* parser, - - // handle long lines and tabulators - std::string lines[MAXPREVLINE]; -- std::string pPrevLine; -+ std::string prevLine; - for (int i = 0; i < MAXPREVLINE; i++) { -- pPrevLine = parser->get_prevline(i); -- expand_tab(lines[i], chenc(pPrevLine, io_enc, ui_enc)); -+ prevLine = parser->get_prevline(i); -+ expand_tab(lines[i], chenc(prevLine, io_enc, ui_enc)); - } - -- pPrevLine = parser->get_prevline(0); -- std::string line = pPrevLine.substr(0, parser->get_tokenpos()); -+ prevLine = parser->get_prevline(0); -+ std::string line = prevLine.substr(0, parser->get_tokenpos()); - std::string line2; - int tokenbeg = expand_tab(line2, chenc(line, io_enc, ui_enc)); - -- pPrevLine = mystrdup(parser->get_prevline(0).c_str()); -- line = pPrevLine.substr(0, parser->get_tokenpos() + token.size()); -+ prevLine = parser->get_prevline(0); -+ line = prevLine.substr(0, parser->get_tokenpos() + token.size()); - int tokenend = expand_tab(line2, chenc(line, io_enc, ui_enc)); - - int rowindex = (tokenend - 1) / x; --- -2.9.3 - diff --git a/hunspell.spec b/hunspell.spec index b9b62f8..2e62287 100644 --- a/hunspell.spec +++ b/hunspell.spec @@ -2,14 +2,13 @@ Name: hunspell Summary: A spell checker and morphological analyzer library -Version: 1.5.4 -Release: 4%{?dist} -Source: https://github.com/hunspell/hunspell/archive/v%{version}.tar.gz -Group: System Environment/Libraries +Version: 1.7.2 +Release: 10%{?dist} +Source: https://github.com/hunspell/hunspell/releases/download/v%{version}/hunspell-%{version}.tar.gz URL: https://github.com/hunspell/hunspell -BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) -License: LGPLv2+ or GPLv2+ or MPLv1.1 -BuildRequires: ncurses-devel, gettext +License: LGPL-2.1-or-later OR GPL-2.0-or-later OR MPL-1.1 +BuildRequires: gcc-c++ +BuildRequires: autoconf, automake, libtool, ncurses-devel, gettext-devel BuildRequires: perl-generators %ifarch %{ix86} x86_64 BuildRequires: valgrind @@ -17,29 +16,38 @@ BuildRequires: valgrind %if %{double_profiling_build} BuildRequires: words %endif +BuildRequires: make Requires: hunspell-en-US +Requires: hunspell-filesystem = %{version}-%{release} -Patch0: 0001-coverity-173065-Resource-leak.patch +Patch0: 0001-Resolves-rhbz-2158548-allow-longer-words-for-hunspel.patch %description -Hunspell is a spell checker and morphological analyzer library and program -designed for languages with rich morphology and complex word compounding or -character encoding. Hunspell interfaces: Ispell-like terminal interface using -Curses library, Ispell pipe interface, OpenOffice.org UNO module. +Hunspell is a spell checker and morphological analyzer library and program +designed for languages with rich morphology and complex word compounding or +character encoding. Hunspell interfaces: Ispell-like terminal interface using +Curses library, Ispell pipe interface, LibreOffice UNO module. %package devel Requires: hunspell = %{version}-%{release}, pkgconfig Summary: Files for developing with hunspell -Group: Development/Libraries %description devel Includes and definitions for developing with hunspell +%package filesystem +Summary: Hunspell filesystem layout + +%description filesystem +Provides a directory in which to store dictionaries provided by other +packages. + %prep %setup -q -%patch0 -p1 -b .cid173065 +%patch -P0 -p1 -b .rhbz2158548 %build +autoreconf -vfi configureflags="--disable-rpath --disable-static --with-ui --with-readline" %define profilegenerate \ @@ -51,7 +59,7 @@ configureflags="--disable-rpath --disable-static --with-ui --with-readline" %if !%{double_profiling_build} %configure $configureflags -make %{?_smp_mflags} +%make_build %else #Generate a word list to use for profiling, take half of it to ensure #that the original word list is then considered to contain correctly @@ -61,7 +69,7 @@ head -n $((`cat /usr/share/dict/words | wc -l`/2)) /usr/share/dict/words |\ #generate profiling %{profilegenerate} %configure $configureflags -make %{?_smp_mflags} +%make_build ./src/tools/affixcompress words > /dev/null 2>&1 ./src/tools/hunspell -d words -l /usr/share/dict/words > /dev/null make check @@ -69,9 +77,8 @@ make distclean #use profiling %{profileuse} %configure $configureflags -make %{?_smp_mflags} +%make_build %endif -cd po && make %{?_smp_mflags} update-gmo && cd .. %check %ifarch %{ix86} x86_64 @@ -81,30 +88,23 @@ make check %install rm -rf $RPM_BUILD_ROOT -make DESTDIR=$RPM_BUILD_ROOT install +%make_install rm -f $RPM_BUILD_ROOT/%{_libdir}/*.a rm -f $RPM_BUILD_ROOT/%{_libdir}/*.la +mkdir $RPM_BUILD_ROOT/%{_datadir}/hunspell mkdir $RPM_BUILD_ROOT/%{_datadir}/myspell %find_lang %{name} -%clean -rm -rf $RPM_BUILD_ROOT - -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig +%ldconfig_scriptlets %files -f %{name}.lang -%defattr(-,root,root,-) -%doc README README.myspell COPYING COPYING.LGPL COPYING.MPL AUTHORS AUTHORS.myspell license.hunspell license.myspell THANKS +%doc README COPYING COPYING.LESSER COPYING.MPL AUTHORS license.hunspell license.myspell THANKS %{_libdir}/*.so.* -%{_datadir}/myspell %{_bindir}/hunspell %{_mandir}/man1/hunspell.1.gz %lang(hu) %{_mandir}/hu/man1/hunspell.1.gz %files devel -%defattr(-,root,root,-) %{_includedir}/%{name} %{_libdir}/*.so %{_bindir}/affixcompress @@ -124,7 +124,125 @@ rm -rf $RPM_BUILD_ROOT %{_mandir}/man3/hunspell.3.gz %{_mandir}/man5/hunspell.5.gz +%files filesystem +%{_datadir}/hunspell +%{_datadir}/myspell + %changelog +* Thu Jul 24 2025 Fedora Release Engineering - 1.7.2-10 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Fri Jan 17 2025 Fedora Release Engineering - 1.7.2-9 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Thu Jul 18 2024 Fedora Release Engineering - 1.7.2-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Wed Jan 24 2024 Fedora Release Engineering - 1.7.2-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jan 20 2024 Fedora Release Engineering - 1.7.2-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Thu Jul 20 2023 Fedora Release Engineering - 1.7.2-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Wed Feb 22 2023 Caolán McNamara - 1.7.2-4 +- migrated to SPDX license + +* Thu Jan 19 2023 Fedora Release Engineering - 1.7.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Fri Jan 06 2023 Caolán McNamara - 1.7.2-2 +- Resolves: rhbz#2158548 get hunspell-ko working again + +* Fri Dec 30 2022 Caolán McNamara - 1.7.2-1 +- Resolves: rhbz#2157049 latest release + +* Mon Aug 22 2022 Caolán McNamara - 1.7.1-1 +- latest release + +* Tue Aug 02 2022 Caolán McNamara - 1.7.0-21 +- Resolves: rhbz#2113444 FTBFS + +* Thu Jul 21 2022 Fedora Release Engineering - 1.7.0-20 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Mar 16 2022 Jens Petersen - 1.7.0-19 +- rework the new hunspell dictionary directory (#2064189) +- drop the myspell/ compatibility symlink +- keep myspell/ as directory and also the new hunspell/ dir +- because of this drop the duplicate directory patch for #2060751 +- filesystem scriptlets are no more + +* Mon Mar 07 2022 Caolán McNamara - 1.7.0-18 +- Resolves: rhbz#2060751 - “hunspell -D” lists dictionaries twice + +* Thu Feb 10 2022 Jens Petersen - 1.7.0-17 +- revert post script from lua back to shell to unbreak rpm-ostree compose + +* Mon Feb 7 2022 Jens Petersen - 1.7.0-16 +- pretrans and post scriptlets should be for filesystem! + (fixes #2051360 regression reported by Mike Fabian) + +* Wed Jan 26 2022 Jens Petersen - 1.7.0-15 +- improve the filesystem pretrans and post scripts: +- pretrans now checks if /usr/share/hunspell exists first +- post checks that /usr/share/myspell does not exist + +* Wed Jan 26 2022 Jens Petersen - 1.7.0-14 +- requires coreutils for post script (#2045568) + +* Fri Jan 21 2022 Vishal Vijayraghavan - 1.7.0-13 +- Rename install dir from myspell to hunspell & create symlink myspell +- https://fedoraproject.org/wiki/Changes/Hunspell_dictionary_dir_change + +* Thu Jan 20 2022 Fedora Release Engineering - 1.7.0-12 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Thu Jul 22 2021 Fedora Release Engineering - 1.7.0-11 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu Mar 25 2021 Caolán McNamara - 1.7.0-10 +- Resolves: rhbz#1943087 require gettext-devel for autopoint + +* Wed Feb 03 2021 Peter Oliver - 1.7.0-9 +- Accomodate Nuspell by putting the dictionary dir in its own subpackage. + +* Tue Jan 26 2021 Fedora Release Engineering - 1.7.0-8 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Tue Jul 28 2020 Fedora Release Engineering - 1.7.0-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Tue Jul 14 2020 Tom Stellard - 1.7.0-6 +- Use make macros +- https://fedoraproject.org/wiki/Changes/UseMakeBuildInstallMacro + +* Wed Jan 29 2020 Fedora Release Engineering - 1.7.0-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Tue Nov 12 2019 Caolán McNamara - 1.7.0-4 +- Resolves: rhbz#1771027 CVE-2019-16707 + +* Thu Jul 25 2019 Fedora Release Engineering - 1.7.0-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Fri Feb 01 2019 Fedora Release Engineering - 1.7.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Tue Nov 13 2018 Caolán McNamara - 1.7.0-1 +- latest release + +* Fri Jul 13 2018 Fedora Release Engineering - 1.6.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Wed Feb 07 2018 Fedora Release Engineering - 1.6.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Fri Nov 24 2017 Caolán McNamara - 1.6.2-1 +- latest release + * Wed Aug 02 2017 Fedora Release Engineering - 1.5.4-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild @@ -319,7 +437,7 @@ rm -rf $RPM_BUILD_ROOT - sort as per "C" locale * Fri Oct 17 2008 Caolán McNamara - 1.2.7-4 -- make wordlist2hunspell remove blank lines +- make wordlist2hunspell remove blank lines * Mon Sep 15 2008 Caolán McNamara - 1.2.7-3 - Workaround rhbz#462184 uniq/sort problems with viramas diff --git a/plans/hunspell.fmf b/plans/hunspell.fmf new file mode 100644 index 0000000..c1627f9 --- /dev/null +++ b/plans/hunspell.fmf @@ -0,0 +1,5 @@ +summary: Basic smoke test +discover: + how: fmf +execute: + how: tmt diff --git a/sources b/sources index ff719a9..0338530 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -9849a2381bacbeb2714034ad825bede8 v1.5.4.tar.gz +SHA512 (hunspell-1.7.2.tar.gz) = 49b3619bff12e111b6cc3f3d9463612b116f9b2a976896718e65f5bc4a83ece11100aaf56a4d18127ea39107446c495e12affe5ff3c9159ae8aba70e512f44ac diff --git a/tests/data.txt b/tests/data.txt new file mode 100644 index 0000000..29c358c --- /dev/null +++ b/tests/data.txt @@ -0,0 +1,4 @@ +Cloud +Linux +Fedora +Fedoraaa diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..ebec85f --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,5 @@ +require: +- hunspell +- hunspell-de +test: bash ./run_tests.sh +framework: shell diff --git a/tests/run_tests.sh b/tests/run_tests.sh new file mode 100644 index 0000000..7d75074 --- /dev/null +++ b/tests/run_tests.sh @@ -0,0 +1,58 @@ +#!/bin/bash + +check_pkg() { + local pkg=$1 + if rpm -q $pkg + then + echo "PASS" + else + echo "FAIL" + fi +} + +check_dict() { + if [ -f "/usr/share/hunspell/de_DE.dic" ] + then + echo "PASS" + else + echo "FAIL" + fi +} + +check_misspelled_word() { + VAR1="Fedoraaa" + VAR2=$(hunspell -l data.txt) + if [ "$VAR1" = "$VAR2" ]; then + echo "PASS" + else + echo "FAIL" + fi +} + +check_misspelled_line() { + VAR1="Fedoraaa" + VAR2=$(hunspell -L data.txt) + if [ "$VAR1" = "$VAR2" ]; then + echo "PASS" + else + echo "FAIL" + fi +} + +check_correct_word() { + VAR1="Cloud\nLinux\nFedora" + VAR1=$(echo -e "$VAR1") + VAR2=$(hunspell -G data.txt) + if [ "$VAR1" = "$VAR2" ]; then + echo "PASS" + else + echo "FAIL" + fi +} + +check_pkg "hunspell" +check_pkg "hunspell-de" +check_dict +check_misspelled_word +check_misspelled_line +check_correct_word