Subject: bug#44457: closed (Re: [bug#44457] [PATCH]: gnu: Add hunspell-dict-it-it.)

From: [email-masked] (GNU bug Tracking System)
Date: Sun, 27 Dec 2020 15:18:02 +0000

Your bug report

#44457: [PATCH]: gnu: Add hunspell-dict-it-it.

which was filed against the guix-patches package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to [email-masked].

-- 
44457: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=44457
GNU Bug Tracking System
Contact [email-masked] with problems

Subject: Re: [bug#44457] [PATCH]: gnu: Add hunspell-dict-it-it.
From: Ludovic Courtès <[email-masked]>
To: paul <[email-masked]>
Cc: [email-masked]
Date: Sun, 27 Dec 2020 16:17:25 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Hi,

paul <[email-masked]> skribis:

> We definitely can but if I understood correctly they are generated
> from STOW wordlists [0] which seems to contain only variants of the
> English language.

Oh right.

> Since also the Libreoffice repository contains some of those variants,
> I was wondering, to achieve better consistency with future
> dictionaries, if it's worth either
>
> - to migrate the duplicates to use (hunspell-dictionary) from (gnu
>   packages hunspell)
>
> - or just to use STOW for the English language and its variants and
>   Libreoffice dictionaries for all the supported languages
>
> I believe either way we should be able to avoid collisions, but maybe
> I should just rename this one dictionary and, after we reach
> consensus, we can always decide to change it back. What do you think?

I think it’s fine this way, I hadn’t realized that the hunspell-dict-*
from aspell.scm were English only.

Now, I just noticed that libreoffice.scm also :-) comes with
huspell-dict-* packages, which are built from yet other sources (primary
sources it seems, rather than LibreOffice).

I’ve applied this patch, but perhaps we should now move those
dictionaries from libreoffice.scm to hunspell.scm?

Thanks!

Ludo’.

Subject: [PATCH]: gnu: Add hunspell-dict-it-it.
From: paul <[email-masked]>
To: [email-masked]
Date: Thu, 5 Nov 2020 02:22:34 +0100
List-Id: <debbugs-submit.debbugs.gnu.org>

Dear Guixers,

as discussed here [0] and [1], I'm sending a patch to add a new 
hunspell.scm file to store hunspell dictionaries and an Italian 
dictionary. I tried to make my implementation reusable by other 
languages by defining a function that produces dictionary packages.

If there is consensus I can move other hunspell dictionaries to the new 
file and/or convert them to use the new function.

Thank you for your review.

Cheers,

Giacomo

[0]: https://issues.guix.gnu.org/42474

[1]: https://lists.nongnu.org/archive/html/guix-devel/2020-11/msg00000.html

From e5db7d7e9c66fa105966fe88d18a40d8075b9f61 Mon Sep 17 00:00:00 2001
From: Giacomo Leidi <[email-masked]>
Date: Thu, 5 Nov 2020 02:04:20 +0100
Subject: [PATCH] gnu: Add hunspell-dict-it-it.

* gnu/packages/hunspell.scm: New file;
(hunspell-dictionary): New variable;
(hunspell-dict-it-it): New variable.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add it.
---
 gnu/local.mk              |  1 +
 gnu/packages/hunspell.scm | 81 +++++++++++++++++++++++++++++++++++++++
 2 files changed, 82 insertions(+)
 create mode 100644 gnu/packages/hunspell.scm

diff --git a/gnu/local.mk b/gnu/local.mk
index 2a994bd3b9..510687e714 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -273,6 +273,7 @@ GNU_SYSTEM_MODULES =				\
   %D%/packages/heads.scm			\
   %D%/packages/hexedit.scm			\
   %D%/packages/hugs.scm				\
+  %D%/packages/hunspell.scm				\
   %D%/packages/hurd.scm				\
   %D%/packages/hyperledger.scm			\
   %D%/packages/i2p.scm				\
diff --git a/gnu/packages/hunspell.scm b/gnu/packages/hunspell.scm
new file mode 100644
index 0000000000..1340ecee7b
--- /dev/null
+++ b/gnu/packages/hunspell.scm
@@ -0,0 +1,81 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Giacomo Leidi <[email-masked]>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu packages hunspell)
+  #:use-module (guix build-system gnu)
+  #:use-module (guix download)
+  #:use-module (guix git-download)
+  #:use-module ((guix licenses) #:prefix license:)
+  #:use-module (guix packages)
+  #:use-module (ice-9 match)
+  #:use-module (gnu packages libreoffice))
+
+(define* (hunspell-dictionary dict-name full-name #:key home-page license)
+  (package
+    (name (string-append
+           "hunspell-dict-"
+           ;; Downcase and replace underscore in package names
+           ;; to follow Guix naming conventions.
+           (string-map (match-lambda
+                         (#\_ #\-)
+                         (chr chr))
+                       (string-downcase dict-name))))
+    (version (package-version libreoffice))
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url (string-append "https://anongit.freedesktop.org/git/"
+                                 "libreoffice/dictionaries.git/"))
+             (commit
+              (string-append "libreoffice-" version))))
+       (file-name (git-file-name "libreoffice-dictionaries" version))
+       (sha256
+        (base32 "0vvxnjpm1322ahf9q8bqs1yhkn7krglw8c6yazcf7a3jljykd9k9"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (delete 'configure)
+         (delete 'build)
+         (replace 'install              ;no install target
+           (lambda* (#:key outputs #:allow-other-keys)
+             (let* ((out (assoc-ref outputs "out"))
+                    (hunspell (string-append out "/share/hunspell/"))
+                    (myspell (string-append out "/share/myspell")))
+               (for-each
+                (lambda (ext)
+                  (install-file (string-append ,dict-name "/" ,dict-name ext)
+                                hunspell))
+                '(".aff" ".dic"))
+               (symlink hunspell myspell)
+               #t))))
+       #:tests? #f))                    ; no tests
+    (synopsis
+     (string-append "Hunspell dictionary for " full-name " (" dict-name ")"))
+    (description "This package provides a dictionary for the Hunspell
+spell-checking library.")
+    (license license)
+    (home-page home-page)))
+
+(define-public hunspell-dict-it-it
+  (let ((home-page "https://libreitalia.org/")
+        (license license:gpl3))
+    (hunspell-dictionary "it_IT" "Italian"
+                         #:home-page home-page
+                         #:license license)))
-- 
2.29.1