diff mbox series

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

Message ID 9a6e026f-d5be-883f-f11b-b383ec858ec7@autistici.org
State Accepted
Headers show
Series [bug#44457] : gnu: Add hunspell-dict-it-it. | expand

Checks

Context Check Description
cbaines/submitting builds success
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch fail View Laminar job
cbaines/issue success View issue

Commit Message

Giacomo Leidi Dec. 23, 2020, 7:15 p.m. UTC
Hi Ludo’ !

On 12/23/20 5:29 PM, Ludovic Courtès wrote:
> Hi!
>
> paul <goodoldpaul@autistici.org> skribis:
>
>>  From 17a476dd234fa4a128eb90ccc8ac9a565045bfa1 Mon Sep 17 00:00:00 2001
>> From: Giacomo Leidi <goodoldpaul@autistici.org>
>> 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.
> I’m picking up this patch as it seems to have fallen through the
> cracks.  :-)
Definitely not a problem but still thanks a lot :)
>
> Overall it LGTM; a couple of comments below.
>
> Apparently this is different from the Hunspell dictionaries made from
> Aspell word lists that appear in (gnu packages aspell), right?
>
> Should we name the packages differently to avoid collisions with the
> existing ‘hunspell-dict-*’ packages?

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.

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?

Should I move this discussion to guix-devel?

>> +    (synopsis
>> +     (string-append "Hunspell dictionary for " full-name " (" dict-name ")"))
> This is recommended against as this prevents i18n:
>
>    https://guix.gnu.org/manual/en/html_node/Synopses-and-Descriptions.html

I apologize about this, I attached an updated patch.


Thank you for your time,

Cheers


Giacomo


[0]: http://wordlist.aspell.net/scowl-readme/

Comments

Ludovic Courtès Dec. 27, 2020, 3:17 p.m. UTC | #1
Hi,

paul <goodoldpaul@autistici.org> 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’.
diff mbox series

Patch

From be2124a82d8c2902a2031e4c6d89100b9fa42168 Mon Sep 17 00:00:00 2001
From: Giacomo Leidi <goodoldpaul@autistici.org>
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 2f267e8aee..025fe88f36 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -277,6 +277,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..e36c1b6cc9
--- /dev/null
+++ b/gnu/packages/hunspell.scm
@@ -0,0 +1,81 @@ 
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org>
+;;;
+;;; 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 trivial)
+  #: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 synopsis 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 trivial-build-system)
+    (native-inputs
+     `(("source" ,source)))
+    (arguments
+     `(#:modules ((guix build utils))
+       #:builder (begin
+                   (use-modules (guix build utils))
+                   (let* ((dictionary
+                           (string-append (assoc-ref %build-inputs "source")
+                                          "/" ,dict-name
+                                          "/" ,dict-name))
+                          (hunspell (string-append %output "/share/hunspell/"))
+                          (myspell (string-append %output "/share/myspell")))
+                     (for-each
+                      (lambda (ext)
+                        (install-file (string-append dictionary ext)
+                                      hunspell))
+                      '(".aff" ".dic"))
+                     (symlink hunspell myspell)
+                     #t))))
+    (synopsis synopsis)
+    (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 ((synopsis identity))
+    (hunspell-dictionary "it_IT" "Italian"
+                         #:synopsis (synopsis "Hunspell dictionary for Italian")
+                         #:home-page "https://libreitalia.org/"
+                         #:license license:gpl3)))
-- 
2.29.2