1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
|
# $Id$
# shellcheck disable=SC2034,SC2148,SC2154
# Maintainer: Masato TOYOSHIMA <phoepsolonix at gmail dot com>
# Contributor: UTUMI Hirosi <utuhiro78 at yahoo dot co dot jp>
# Contributor: BrLi <brli at chakralinux dot org>
# Contributor: Nocifer <apmichalopoulos at gmail dot com>
# Contributor: Felix Yan <felixonmars@gmail.com>
# Contributor: ponsfoot <cabezon dot hashimoto at gmail dot com>
## Mozc compile option
_bldtype=Release
_mozc_commit=671cec2b4239e2b56fa242d765337456edbe3b44
_bcr_commit=f3696c14577aaabeed3dc04e4e9a228dabe52450
_dict_to_mozc_commit=c03804e133966738070e001a6c3a72d21ca655b1
_branch=fcitx
# Sudachi Dictionary
_sudachidict_date=20241021
## follow the submodule commits in https://github.com/fcitx/mozc/tree/fcitx/src/third_party
_abseil_cpp_commit=4447c756
_breakpad_commit=216cea7b
_gtest_commit=b514bdc8
_gyp_commit=9ecf45e3
_japanese_usage_dictionary_commit=e5b3425
_protobuf_commit=5fda5abda
_wil_commit=fc5dbf5
pkgbase=mozc-with-jp-dict
pkgname=("fcitx-$pkgbase")
pkgver=2.30.5618.102
pkgrel=21
arch=('x86_64')
url="https://github.com/fcitx/mozc"
license=('Apache-2.0 AND BSD-2-Clause AND BSD-3-Clause AND MIT AND NAIST-2003 AND Unicode-3.0 AND LicenseRef-Okinawa-Dictionary')
makedepends=('fcitx' 'fcitx-qt6' 'bazel' 'git' 'python' 'mold' 'libibus' 'rustup')
options=(!lto)
source=("git+$url.git#commit=${_mozc_commit}"
"bcr::git+https://github.com/bazelbuild/bazel-central-registry.git#commit=${_bcr_commit}"
"git+https://github.com/abseil/abseil-cpp.git#commit=${_abseil_cpp_commit}"
"git+https://github.com/google/breakpad.git#commit=${_breakpad_commit}"
"git+https://github.com/google/googletest.git#commit=${_gtest_commit}"
"git+https://github.com/chromium/gyp.git#commit=${_gyp_commit}"
"git+https://github.com/hiroyuki-komatsu/japanese-usage-dictionary.git#commit=${_japanese_usage_dictionary_commit}"
"git+https://github.com/protocolbuffers/protobuf.git#commit=${_protobuf_commit}"
"git+https://github.com/microsoft/wil.git#commit=${_wil_commit}"
git+https://github.com/phoepsilonix/dict-to-mozc.git#commit=${_dict_to_mozc_commit}
# https://github.com/WorksApplications/SudachiDict
"http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict-raw/${_sudachidict_date}/small_lex.zip"
"http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict-raw/${_sudachidict_date}/core_lex.zip"
"http://sudachi.s3-website-ap-northeast-1.amazonaws.com/sudachidict-raw/${_sudachidict_date}/notcore_lex.zip"
"LICENSE-SudachiDict::https://github.com/WorksApplications/SudachiDict/raw/develop/LEGAL"
# MeCab-unidic-Neologd https://github.com/neologd/mecab-unidic-neologd
https://github.com/phoepsilonix/mecab-unidic-neologd/raw/refs/heads/master/seed/mecab-unidic-user-dict-seed.20200910.csv.xz
LICENSE-MeCab-unidic-Neologd::https://github.com/phoepsilonix/mecab-unidic-neologd/raw/refs/heads/master/COPYING
# MeCab-ipadic-Neologd https://github.com/neologd/mecab-ipadic-neologd
https://github.com/phoepsilonix/mecab-ipadic-neologd/raw/refs/heads/master/seed/mecab-user-dict-seed.20200910.csv.xz
LICENSE-MeCab-ipadic-Neologd::https://github.com/neologd/mecab-ipadic-neologd/raw/refs/heads/master/COPYING
)
sha512sums=('0fff2ebc40401807fccd882450f3f66e824c80f47f8994fb9ff1cabd2c6db8f9e71b73b3316c5dc7cb73959aa393586e2961b799837a2f3afb441e774273f4ca'
'83281fcd5000cec7fa5b6955bad4d55a341ce84e53a4171fafad0c0a2f0b82df38334d6e6726f1408867413e12025d0ca348aceaedf4fb505ada925cb0c35ed0'
'83a6fa68645d138af64ddddcfd15da567c4c46f92fb69be6c10bc5989c3aa6ab85776dfb3fcccdc9e7c32ca9f8260be121ceb7d329792d28ec9a66417a903a68'
'f69046af8c37a2a8a441a258d5b8677016966cb43d8a3bb48badc78123a885d6179ff77d7885fd6c84130136a1b8931a98d35f9fcce3d03ed31a37a72ece0b9d'
'44db7d4a09aa7d36f1fb5a89be2234834a58834c76e445f8e9f7bc5685f6a76005b19fc758842c63641e476fa97c10eb968fa13965312fafca25843181fd025b'
'c8ce90c2493c05a78221befc4cbbcfcbe7a0bafb7bfa55403b085bf8c3fd069c4690d1ff59ef9e0e8a813bd3673588eb38e02ad81c42a6dd0be5246f27442169'
'91b878735e767ddf6f1fe3de61486c1e78936a0f683855e7c34a21c711f405899d3de369d2ff0a1910d65b1afc8c225d8d8b9398cf98d760f3afcfe42644fca2'
'4ec946b3e73869c47bb5f52ff91d57ce37b8bf94804174ad278be699a9a9d9f9ba11e20e6ad6017d41653cb99ac41a11d1d4ecadf87556b1c3a189f77c138757'
'504066a457f77b510f492626c919b6fd7b61f77948bdddef0f7e43ae09bb4bf03cea7000fba91ae0123a94d3b39cac6dfac2010126849afe0a183727fe7b0fc1'
'a22826e9dc86dc557c668293bc37666ae9a8fb90bae0ab829444e443a61261b7d220ef4c67532f60d44df0d4feec682cf1418345950984d3e7bf28ec2ad450eb'
'807b68f18e0f9093ccca368fcd4a209a0723167be7aa48e04217f053bc0911399f3bb86b95cb118e64bb9f53f5242c9c51bcff14f81d94ed68db2448c9386b32'
'f3ea37e785d604d614b8fa27bf03d1b669240b7c28c293d953a3ac40b6faff56893b42f8e082ccc7723edb5b27a4613a99343477a34fc76afd458912025555e9'
'384a8c55e928323a4a6b3f83a6845199c67cd3766ca586ea936c41aeb6728020b2430daeb88de3cc19413b6111db5971552f8a538826d3718ab33b7281226ff8'
'1a5b62c83a08781b44bd73f978a4024d93667df47b1a3f4c179096cbc32f28e803c50dca6b5b7ad20fb788d46797551c36ec1efb7782f4361b695e2e0a6060ca'
'3bdbda066130043e2e6403a8196a13b78a35313fc8797769eb8f76033349f420c68ac50a3e0604836c2cb577179f3e123af64a4e45aa05d14575f46707383d28'
'44b228264547c4628599b5888bd177dc3ddb845094a0acebcd3d7d7665e2cda8861f7210f80f0f40531f46581f565aab3489a6a2ff3aa75c058d552b23ea8d6e'
'5f3aa91974d7ef5633a013effb7acf729cec7d096b4740ceb9915fe7df10e2e45d0d76ffc2d36f1e16d322e7b3974653601a79b6ada05371de8fc7e80af14644'
'77a8c1d76a53627f8680f761f9c996b04e6b609bdb813cb5aedc7f8214d9b5f13aea53788814029f6f1e263c50ecb58feb5999e95d51fe7e4707b6a913d4bbe4')
pkgver() {
cd "${srcdir}/mozc" || exit
source <(grep = src/data/version/mozc_version_template.bzl| tr -d ' ')
printf "%s.%s.%s.%s" "$MAJOR" "$MINOR" "$BUILD_OSS" "$((REVISION+2))"
}
prepare() {
cd "$srcdir/mozc"
git submodule init
git config submodule.src/third_party/abseil-cpp.url "$srcdir/abseil-cpp"
git config submodule.src/third_party/breakpad.url "$srcdir/breakpad"
git config submodule.src/third_party/gtest.url "$srcdir/googletest"
git config submodule.src/third_party/gyp.url "$srcdir/gyp"
git config submodule.src/third_party/japanese_usage_dictionary.url "$srcdir/japanese-usage-dictionary"
git config submodule.src/third_party/protobuf.url "$srcdir/protobuf"
git config submodule.src/third_party/wil.url "$srcdir/wil"
git -c protocol.file.allow=always submodule update
cd "$srcdir/mozc/src"
# use libstdc++ instead of libc++
sed '/stdlib=libc++/d;/-lc++/d' -i gyp/common.gypi
# nm -f posix (llvm-nm -f posix)
sed 's|nm \(.*\)\-f p |nm \1-f posix |' -i third_party/gyp/pylib/gyp/generator/ninja.py
# disable warning of ANDROID_NDK_HOME.
sed -e '/register_toolchains("@androidndk\/\/:all")/d' -i MODULE.bazel
rustup update stable
cd "${srcdir}/dict-to-mozc/" || exit
#sed -e "s|channel *=.*|channel = \"stable\"|" -i rust-toolchain.toml
#sed -e "/components.*/d" -i rust-toolchain.toml
# すだちを優先
msg '1. Build the rust program(mozcdict-ext), it may take some time...'
rustup target list --installed | grep $(rustc -vV | sed -e 's|host: ||' -e 's|-gnu||p' -n) | grep -v musl && TARGET=$(rustup target list --installed | grep $(rustc -vV | sed -e 's|host: ||' -e 's|-gnu||p' -n)|grep -v musl|head -n1) || TARGET=$(rustup target list --installed | grep $(rustc -vV | sed -e 's|host: ||' -e 's|-gnu||p' -n)|grep musl|head -n1)
unset RUSTC
cargo build --release --target $TARGET --config config.toml
msg '2. Convert SudachiDict to Mozc System Dictionary format. It may take some time...'
cat "${srcdir}"/mozc/src/data/dictionary_oss/dictionary*.txt > all-dict.txt
cat ${srcdir}/small_lex.csv ${srcdir}/core_lex.csv ${srcdir}/notcore_lex.csv > all.csv
cp ${srcdir}/mozc/src/data/dictionary_oss/id.def ./
./target/$TARGET/release/dict-to-mozc -s -i ./id.def -f all.csv >> all-dict.txt
msg '3. Convert MeCab-unidic-Neologd to Mozc System Dictionary format. It may take some time...'
./target/$TARGET/release/dict-to-mozc -n -i ./id.def -f ${srcdir}/mecab-unidic-user-dict-seed.20200910.csv >> all-dict.txt
msg '4. Convert MeCab-ipadic-Neologd to Mozc System Dictionary format. It may take some time...'
./target/$TARGET/release/dict-to-mozc -n -P 12 -N 10 -i ./id.def -f ${srcdir}/mecab-user-dict-seed.20200910.csv >> all-dict.txt
msg '5. Duplicate data will be removed.'
# 読み、品詞ID、右品詞ID、表記による重複チェック
awk 'BEGIN{FS="\t";OFS="\t"}{if (!a[$1,$2,$3,$5]++) {print $0}}' all-dict.txt|sort > finish-dict.txt
msg '6. Finally, add the SudachiDict, MeCab-unidic-Neologd and MeCab-ipadic-Neologd dictionary to the Mozc source.'
mkdir -p tmp
cd tmp
ROWS=$(echo $(($(wc -l ../finish-dict.txt |cut -f1 -d" ")/10+1)))
split -d -l $ROWS --additional-suffix=.txt ../finish-dict.txt dictionary
cp -af ./dictionary*.txt "$srcdir/mozc/src/data/dictionary_oss/"
sync
}
build() {
cd "$srcdir/mozc/src" || exit
# Fix compatibility with google-glog 0.3.3 (symbol conflict)
CFLAGS="${CFLAGS} -fvisibility=hidden"
CXXFLAGS="${CXXFLAGS} -fvisibility=hidden"
BAZEL_COPTS=$(echo ${CPPFLAGS} ${CFLAGS} | xargs -n1 |grep -v _FORTIFY_SOURCE | xargs -n1 echo "--copt")
BAZEL_CXXOPTS=$(echo ${CPPFLAGS} ${CXXFLAGS} | xargs -n1 |grep -v _FORTIFY_SOURCE | xargs -n1 echo "--cxxopt")
LDFLAGS="${LDFLAGS} -fuse-ld=mold"
BAZEL_LDOPTS=$(echo ${LDFLAGS} | xargs -n1 echo "--linkopt")
# The bazel rules have changed, so the cache will be deleted.
#bazel clean --expunge
# fcitx4
# unix/fcitx:fcitx-mozc.so server:mozc_server gui/tool:mozc_tool
env _BUILD_TARGETS="unix/fcitx:fcitx-mozc.so server:mozc_server gui/tool:mozc_tool" \
../scripts/build_fcitx5_bazel --registry=file://${srcdir}/bcr --config release_build --cxxopt=-Wno-uninitialized --host_cxxopt=-Wno-uninitialized $BAZEL_LDOPTS $BAZEL_COPTS $BAZEL_CXXOPTS
bazel shutdown
}
install_mozc-with-jp-dict-common() {
cd ${srcdir}/mozc/src || exit
export PREFIX="$pkgdir/usr"
export _bldtype
install -d "$pkgdir/usr/share/licenses/$pkgname/"
# Unicode-3.0
head -n 50 data/unicode/JIS0201.TXT > LICENSE.JIS0201
head -n 73 data/unicode/JIS0208.TXT > LICENSE.JIS0208
head -n 22 data/unicode/jisx0213-2004-std.txt > LICENSE.jisx0213-2004-std
# BSD-3-Clause
sed -n 1,29p unix/fcitx5/fcitx_key_translator.h > Fcitx5
sed -i -e 's|^\/\/[ ]\?||g' Fcitx5
install -Dm644 Fcitx5 "${pkgdir}"/usr/share/licenses/${pkgname}/Fcitx5
# BSD-3-Clause
sed -n 67,94p data/installer/credits_en.html > Mozc
install -Dm644 Mozc "${pkgdir}"/usr/share/licenses/${pkgname}/Mozc
# BSD-3-Clause
sed -n 317,344p data/installer/credits_en.html > Breakpad
install -Dm644 Breakpad "${pkgdir}"/usr/share/licenses/${pkgname}/Breakpad
# NAIST-2003
sed -n 355,424p data/installer/credits_en.html > IPAdic
install -Dm644 IPAdic "${pkgdir}"/usr/share/licenses/${pkgname}/IPAdic
# BSD-2-Clause
sed -n 435,457p data/installer/credits_en.html > Japanese-Usage-Dictionary
install -Dm644 Japanese-Usage-Dictionary "${pkgdir}"/usr/share/licenses/${pkgname}/Japanese-Usage-Dictionary
# Public Domain Data
sed -n 468,470p data/installer/credits_en.html > Okinawa-Dictionary
install -Dm644 Okinawa-Dictionary "${pkgdir}"/usr/share/licenses/${pkgname}/Okinawa-Dictionary
# BSD-3-Clause
sed -n 481,513p data/installer/credits_en.html > Protocol-Buffers
install -Dm644 Protocol-Buffers "${pkgdir}"/usr/share/licenses/${pkgname}/Protocol-Buffers
# MIT
sed -n 698,704p data/installer/credits_en.html > Tamachi-Phonetic-Kanji-Alphabet
install -Dm644 Tamachi-Phonetic-Kanji-Alphabet "${pkgdir}"/usr/share/licenses/${pkgname}/Tamachi-Phonetic-Kanji-Alphabet
# MIT
sed -n 762,782p data/installer/credits_en.html > Windows-Implementation-Library
sed -i -e 's|^[ \t]*||g' Windows-Implementation-Library
install -Dm644 Windows-Implementation-Library "${pkgdir}"/usr/share/licenses/${pkgname}/Windows-Implementation-Library
install -d "$pkgdir/usr/share/licenses/$pkgname/data/dictionary_oss/"
install -D -m 644 "$srcdir/LICENSE-SudachiDict" "$pkgdir/usr/share/licenses/$pkgname/data/dictionary_oss/"
install -D -m 644 "$srcdir/LICENSE-MeCab-unidic-Neologd" "$pkgdir/usr/share/licenses/$pkgname/data/dictionary_oss/"
install -D -m 644 "$srcdir/LICENSE-MeCab-ipadic-Neologd" "$pkgdir/usr/share/licenses/$pkgname/data/dictionary_oss/"
}
package_fcitx-mozc-with-jp-dict() {
pkgdesc="Fcitx Module for Mozc(the Open Source Edition of Google Japanese Input) with SudachiDict and MeCab UniDic Neologd and MeCab IpaDic Neologd"
depends=('fcitx' 'fcitx-qt6')
optdepends=('fcitx-configtool')
replaces=('fcitx-mozc')
provides=("fcitx-mozc=${pkgver}")
conflicts=('fcitx-mozc' 'fcitx5-mozc' 'ibus-mozc' fcitx5 fcitx5-qt fcitx5-configtool)
export PREFIX="$pkgdir/usr"
export _bldtype
cd ${srcdir}/mozc/src || exit
install_mozc-with-jp-dict-common
../scripts/install_server_bazel
../scripts/install_fcitx_bazel
}
|