Add mecab package

Julien LepillerTue Sep 19 21:57:00+0200 2023

b7e10db

Add mecab package

modules/mecab-variable-param.patch unknown status 1

1+
From 2396e90056706ef897acab3aaa081289c7336483 Mon Sep 17 00:00:00 2001
2+
From: LEPILLER Julien <julien.lepiller@irisa.fr>
3+
Date: Fri, 19 Apr 2019 11:48:39 +0200
4+
Subject: [PATCH] Allow variable parameters
5+
6+
---
7+
 mecab/src/param.cpp | 6 +++++-
8+
 1 file changed, 5 insertions(+), 1 deletion(-)
9+
10+
diff --git a/mecab/src/param.cpp b/mecab/src/param.cpp
11+
index 65328a2..006b1b5 100644
12+
--- a/mecab/src/param.cpp
13+
+++ b/mecab/src/param.cpp
14+
@@ -79,8 +79,12 @@ bool Param::load(const char *filename) {
15+
     size_t s1, s2;
16+
     for (s1 = pos+1; s1 < line.size() && isspace(line[s1]); s1++);
17+
     for (s2 = pos-1; static_cast<long>(s2) >= 0 && isspace(line[s2]); s2--);
18+
-    const std::string value = line.substr(s1, line.size() - s1);
19+
+    std::string value = line.substr(s1, line.size() - s1);
20+
     const std::string key   = line.substr(0, s2 + 1);
21+
+
22+
+    if(value.find('$') == 0) {
23+
+        value = std::getenv(value.substr(1).c_str());
24+
+    }
25+
     set<std::string>(key.c_str(), value, false);
26+
   }
27+
 
28+
-- 
29+
2.20.1
30+

modules/packages/mecab.scm unknown status 1

1+
(define-module (packages mecab)
2+
  #:use-module (guix packages)
3+
  #:use-module (guix git-download)
4+
  #:use-module ((guix licenses) #:prefix license:)
5+
  #:use-module (guix build-system gnu)
6+
  #:use-module (gnu packages)
7+
  #:use-module (gnu packages autotools)
8+
  #:use-module (gnu packages base)
9+
  #:use-module (gnu packages guile)
10+
  #:use-module (gnu packages guile-xyz)
11+
  #:use-module (gnu packages pkg-config))
12+
13+
(define-public mecab
14+
  (package
15+
    (name "mecab")
16+
    (version "0.996")
17+
    (source (origin
18+
              (method git-fetch)
19+
              (uri (git-reference
20+
                     (url "https://github.com/taku910/mecab")
21+
                     ;; latest commit
22+
                     (commit "046fa78b2ed56fbd4fac312040f6d62fc1bc31e3")))
23+
              (file-name (git-file-name name version))
24+
              (sha256
25+
               (base32
26+
                "1hdv7rgn8j0ym9gsbigydwrbxa8cx2fb0qngg1ya15vvbw0lk4aa"))
27+
              (patches
28+
                (search-patches
29+
                  "mecab-variable-param.patch"))))
30+
    (build-system gnu-build-system)
31+
    (native-search-paths
32+
      (list (search-path-specification
33+
              (variable "MECAB_DICDIR")
34+
              (separator #f)
35+
              (files '("lib/mecab/dic")))))
36+
    (arguments
37+
     `(#:phases
38+
       (modify-phases %standard-phases
39+
         (add-after 'unpack 'chdir
40+
           (lambda _
41+
             (chdir "mecab")))
42+
         (add-before 'build 'add-mecab-dicdir-variable
43+
           (lambda _
44+
             (substitute* "mecabrc.in"
45+
               (("dicdir = .*")
46+
                "dicdir = $MECAB_DICDIR"))
47+
             (substitute* "mecab-config.in"
48+
               (("echo @libdir@/mecab/dic")
49+
                "if [ -z \"$MECAB_DICDIR\" ]; then
50+
  echo @libdir@/mecab/dic
51+
else
52+
  echo \"$MECAB_DICDIR\"
53+
fi")))))))
54+
    (inputs (list libiconv))
55+
    (home-page "https://taku910.github.io/mecab")
56+
    (synopsis "Morphological analysis engine for texts")
57+
    (description "Mecab is a morphological analysis engine developped as a
58+
collaboration between the Kyoto university and Nippon Telegraph and Telephone
59+
Corporation.  The engine is independent of any language, dictionary or corpus.")
60+
    (license (list license:gpl2+ license:lgpl2.1+ license:bsd-3))))
61+
62+
(define-public mecab-ipadic
63+
  (package
64+
    (name "mecab-ipadic")
65+
    (version "2.7.0")
66+
    (source (package-source mecab))
67+
    (build-system gnu-build-system)
68+
    (arguments
69+
     `(#:configure-flags
70+
       (list (string-append "--with-dicdir=" (assoc-ref %outputs "out")
71+
                            "/lib/mecab/dic")
72+
             "--with-charset=utf8")
73+
       #:phases
74+
       (modify-phases %standard-phases
75+
         (add-after 'unpack 'chdir
76+
           (lambda _
77+
             (chdir "mecab-ipadic")))
78+
         (add-before 'configure 'set-mecab-dir
79+
           (lambda* (#:key outputs #:allow-other-keys)
80+
             (setenv "MECAB_DICDIR" (string-append (assoc-ref outputs "out")
81+
                                                   "/lib/mecab/dic")))))))
82+
    (native-inputs (list mecab)); for mecab-config
83+
    (home-page "https://taku910.github.io/mecab")
84+
    (synopsis "Dictionary data for MeCab")
85+
    (description "This package contains dictionnary data derived from
86+
ipadic for use with MeCab.")
87+
    (license (license:non-copyleft "mecab-ipadic/COPYING"))))
88+
89+
90+
(define-public guile-mecab
91+
  (package
92+
    (name "guile-mecab")
93+
    (version "0")
94+
    (source (origin
95+
              (method git-fetch)
96+
              (uri (git-reference
97+
                     (url "https://git.lepiller.eu/git/guile-mecab")
98+
                     (commit "a0cc754316ba84cb5fbf617795e7b28316442f82")))
99+
              (file-name (git-file-name name version))
100+
              (sha256
101+
               (base32
102+
                "0q9kb7yli7vvdd9y4xzaxdv654dr65f6gwjpc6qwb7q01npmjf5n"))))
103+
    (build-system gnu-build-system)
104+
    (arguments
105+
     `(#:phases
106+
       (modify-phases %standard-phases
107+
         (add-after 'unpack 'set-writable
108+
           (lambda _
109+
             (for-each
110+
               (lambda (file) (chmod file #o644))
111+
               (find-files "." "."))))
112+
         (add-after 'set-writable 'clean
113+
           (lambda _
114+
             (when (file-exists? "Makefile")
115+
               (invoke "make" "distclean")))))))
116+
    (inputs
117+
     `(("mecab" ,mecab)))
118+
    (propagated-inputs
119+
     `(("guile-bytestructures" ,guile-bytestructures)))
120+
    (native-inputs
121+
     `(("autoconf" ,autoconf)
122+
       ("automake" ,automake)
123+
       ("guile" ,guile-3.0)
124+
       ("pkg-config" ,pkg-config)))
125+
    (home-page "")
126+
    (synopsis "")
127+
    (description "")
128+
    (license license:gpl3+)))