# $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=0cbb8f18e8df5eb4e110bab850cebc1f57811f16 _bcr_commit=78837d290757ac27b73013147c515623ff9196c4 _dict_to_mozc_commit=a78381248ae539db22f62ca0af6c10b9035e5dab _branch=fcitx # Sudachi Dictionary _sudachidict_date=20240716 ## 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=7cc670c180 _wil_commit=fc5dbf5 pkgbase=mozc-with-jp-dict pkgname=("ibus-$pkgbase" "fcitx5-$pkgbase" "emacs-$pkgbase") pkgver=2.30.5618.102 pkgrel=4 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=('qt6-base' 'fcitx5' 'fcitx5-qt' 'bazel' 'git' 'python' 'pkg-config' '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} # Neologd-ipadic 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 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 # 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" ) sha512sums=('20335ac48f9719143e9c647613a3a8da4e5110bf367d9333f9389f1a456c7340e179a790eec2dadc63f7b428fdd7d52778bd522b809ddd77da49b4d8c0360b55' 'cbff7e417918d9827ac7399bdf8389bc9eb862db52785fd35a4e4dea210c13925b6ca0b3b5a9079fd14bb0f9e0342f6c097c6934fbf7f1d71a3d044aa6a88ff0' '83a6fa68645d138af64ddddcfd15da567c4c46f92fb69be6c10bc5989c3aa6ab85776dfb3fcccdc9e7c32ca9f8260be121ceb7d329792d28ec9a66417a903a68' 'f69046af8c37a2a8a441a258d5b8677016966cb43d8a3bb48badc78123a885d6179ff77d7885fd6c84130136a1b8931a98d35f9fcce3d03ed31a37a72ece0b9d' '44db7d4a09aa7d36f1fb5a89be2234834a58834c76e445f8e9f7bc5685f6a76005b19fc758842c63641e476fa97c10eb968fa13965312fafca25843181fd025b' 'c8ce90c2493c05a78221befc4cbbcfcbe7a0bafb7bfa55403b085bf8c3fd069c4690d1ff59ef9e0e8a813bd3673588eb38e02ad81c42a6dd0be5246f27442169' '91b878735e767ddf6f1fe3de61486c1e78936a0f683855e7c34a21c711f405899d3de369d2ff0a1910d65b1afc8c225d8d8b9398cf98d760f3afcfe42644fca2' 'b9fade4c8cfe60915c51433c1acd4b253b947dd2fabe7b70dd53c92cd751322fb007ef68e04d5551315f3bc2f52048fb8b9babf40455309ab7b38d9f3efd348a' '504066a457f77b510f492626c919b6fd7b61f77948bdddef0f7e43ae09bb4bf03cea7000fba91ae0123a94d3b39cac6dfac2010126849afe0a183727fe7b0fc1' 'dd015c0e578bccc715d19e1a6346dd115b430874e410b5357c7754a277942f58f627228f86c55209402898524a6b8722cbecab92e98469b975be1e59b6be3122' '5f3aa91974d7ef5633a013effb7acf729cec7d096b4740ceb9915fe7df10e2e45d0d76ffc2d36f1e16d322e7b3974653601a79b6ada05371de8fc7e80af14644' '77a8c1d76a53627f8680f761f9c996b04e6b609bdb813cb5aedc7f8214d9b5f13aea53788814029f6f1e263c50ecb58feb5999e95d51fe7e4707b6a913d4bbe4' '3bdbda066130043e2e6403a8196a13b78a35313fc8797769eb8f76033349f420c68ac50a3e0604836c2cb577179f3e123af64a4e45aa05d14575f46707383d28' '44b228264547c4628599b5888bd177dc3ddb845094a0acebcd3d7d7665e2cda8861f7210f80f0f40531f46581f565aab3489a6a2ff3aa75c058d552b23ea8d6e' '9428d55d2d9603c8bfcd12cc0184415f23af1d09a2d0ebdf0cce694a09638e7cfe0c1241bf1c943427b2fccfea619ca8b2e22db3452d837b416eb31aa224e766' 'f0a3544dcc99bf8c4cea8ebfd31af827e209f0678997ab55f6eda54f34cad5e148d1bd156417a621665c2068e7371801dc9cf1baa34f2270a99da7055f46d95d' '5551cbf4da52bc2eb73841013f98634ac8fcb56e5f6e163c9e640d5b9eaa4eafc2fa72cc20660db012ebdb438f835c2098b77c02c483d3244df901748e3d30fa' '1a5b62c83a08781b44bd73f978a4024d93667df47b1a3f4c179096cbc32f28e803c50dca6b5b7ad20fb788d46797551c36ec1efb7782f4361b695e2e0a6060ca') 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/src" || exit 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 # 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 # すだちを優先 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 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 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/" #cat finish-dict.txt >> "$srcdir/mozc/src/data/dictionary_oss/dictionary00.txt" 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" cd ${srcdir}/mozc/src || exit BAZEL_COPTS="" BAZEL_CXXOPTS="" for f in $CFLAGS;do ([[ ! $f =~ _FORTIFY_SOURCE ]]) && BAZEL_COPTS+=" --copt $f";done for f in $CXXFLAGS;do ([[ ! $f =~ _FORTIFY_SOURCE ]]) && BAZEL_CXXOPTS+=" --cxxopt $f";done BAZEL_LDOPTS=$(echo $LDFLAGS | xargs -n1 echo "--linkopt") # The bazel rules have changed, so the cache will be deleted. #bazel clean --expunge bazel build --registry=file://$srcdir/bcr --config oss_linux --config release_build package unix/fcitx5:fcitx5-mozc.so --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_fcitx5-mozc-with-jp-dict() { pkgdesc="Fcitx5 module for Mozc with SudachiDict dictionary" depends=('fcitx5' 'fcitx5-qt' 'hicolor-icon-theme' gcc-libs glibc qt6-base) replaces=('fcitx5-mozc') provides=("fcitx5-mozc=${pkgver}") conflicts=('fcitx-mozc' 'fcitx5-mozc' 'fcitx' 'fcitx-qt5' 'fcitx-qt6' 'ibus-mozc') export PREFIX="$pkgdir/usr" export _bldtype cd ${srcdir}/mozc/src || exit install_mozc-with-jp-dict-common ../scripts/install_server_bazel ../scripts/install_fcitx5_bazel } package_ibus-mozc-with-jp-dict() { pkgdesc="IBus engine module for Mozc with SudachiDict dictionary" depends=('ibus>=1.4.1' "qt6-base" 'libibus') replaces=('ibus-mozc') provides=("ibus-mozc=${pkgver}") conflicts=('ibus-mozc' 'fcitx' 'fcitx-configtool' 'fcitx-qt5' 'fcitx-qt6' 'fcitx-mozc' 'fcitx5' 'fcitx5-configtool' 'fcitx5-qt' 'fcitx5-mozc') export _bldtype cd "${srcdir}/mozc/src" || exit install_mozc-with-jp-dict-common ../scripts/install_server_bazel sed -i -e "s|0\.0\.0\.0|${pkgver}|g" bazel-bin/unix/ibus/mozc.xml install -D -m 755 bazel-bin/unix/ibus/ibus_mozc "$pkgdir/usr/lib/ibus-mozc/ibus-engine-mozc" install -D -m 644 bazel-bin/unix/ibus/mozc.xml "$pkgdir/usr/share/ibus/component/mozc.xml" install -D -m 755 bazel-bin/renderer/qt/mozc_renderer "${pkgdir}/usr/lib/mozc/mozc_renderer" cd bazel-bin/unix || exit unzip -o icons.zip mozc.png *.svg -d tmp cd tmp || exit install -Dm644 mozc.png "${pkgdir}/usr/share/ibus-mozc/product_icon.png" find . -type f -name "*.svg" | xargs -I{} install -Dm644 "{}" "${pkgdir}/usr/share/ibus-mozc/{}" } package_emacs-mozc-with-jp-dict() { pkgdesc="Emacs engine module for Mozc with SudachiDict dictionary" license=('BSD-3-Clause') depends=(gcc-libs "emacs") replaces=('emacs-mozc') conflicts=('emacs-mozc') export _bldtype cd "${srcdir}/mozc/src" || exit install_mozc-with-jp-dict-common install -Dm755 bazel-bin/unix/emacs/mozc_emacs_helper "$pkgdir/usr/bin/mozc_emacs_helper" install -Dm644 unix/emacs/mozc.el "$pkgdir/usr/share/emacs/site-lisp/emacs-mozc/mozc.el" }