git: fd4979cb6f1e - main - japanese/py-SudachiPy: New port: Implementation of Sudachi, a Japanese morphological analyzer

From: Yuri Victorovich <yuri_at_FreeBSD.org>
Date: Sat, 20 Jul 2024 21:27:46 UTC
The branch main has been updated by yuri:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fd4979cb6f1ecf00a450730da75c0549f1d87a92

commit fd4979cb6f1ecf00a450730da75c0549f1d87a92
Author:     Yuri Victorovich <yuri@FreeBSD.org>
AuthorDate: 2024-07-20 21:27:08 +0000
Commit:     Yuri Victorovich <yuri@FreeBSD.org>
CommitDate: 2024-07-20 21:27:08 +0000

    japanese/py-SudachiPy: New port: Implementation of Sudachi, a Japanese morphological analyzer
---
 japanese/Makefile                                  |   1 +
 japanese/py-SudachiPy/Makefile                     | 179 +++++++++++++
 japanese/py-SudachiPy/distinfo                     | 279 +++++++++++++++++++++
 .../files/patch-sudachi-lib_src_plugin_loader.rs   |  11 +
 japanese/py-SudachiPy/pkg-descr                    |   4 +
 5 files changed, 474 insertions(+)

diff --git a/japanese/Makefile b/japanese/Makefile
index 9d42f757e75a..3834a8de470b 100644
--- a/japanese/Makefile
+++ b/japanese/Makefile
@@ -223,6 +223,7 @@
     SUBDIR += plain2
     SUBDIR += plan
     SUBDIR += prn
+    SUBDIR += py-SudachiPy
     SUBDIR += py-jaconv
     SUBDIR += qkc
     SUBDIR += qolibri
diff --git a/japanese/py-SudachiPy/Makefile b/japanese/py-SudachiPy/Makefile
new file mode 100644
index 000000000000..c4d2e836b193
--- /dev/null
+++ b/japanese/py-SudachiPy/Makefile
@@ -0,0 +1,179 @@
+PORTNAME=	SudachiPy
+DISTVERSIONPREFIX=	v
+DISTVERSION=	0.6.8
+CATEGORIES=	japanese python
+#MASTER_SITES=	PYPI
+PKGNAMEPREFIX=	${PYTHON_PKGNAMEPREFIX}
+
+MAINTAINER=	yuri@FreeBSD.org
+COMMENT=	Implementation of Sudachi, a Japanese morphological analyzer
+WWW=		https://github.com/WorksApplications/sudachi.rs
+
+LICENSE=	APACHE20
+
+BUILD_DEPENDS=	${PY_SETUPTOOLS} \
+		${PYTHON_PKGNAMEPREFIX}setuptools-rust>0:devel/py-setuptools-rust@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}setuptools-scm>0:devel/py-setuptools-scm@${PY_FLAVOR} \
+		${PYTHON_PKGNAMEPREFIX}wheel>0:devel/py-wheel@${PY_FLAVOR}
+
+USES=		cargo python
+USE_PYTHON=	pep517 concurrent autoplist pytest
+
+USE_GITHUB=	yes
+GH_ACCOUNT=	WorksApplications
+GH_PROJECT=	sudachi.rs
+
+WRKSRC_SUBDIR=	python
+
+CARGO_CRATES=	aho-corasick-1.1.3 \
+		anes-0.1.6 \
+		ansi_term-0.12.1 \
+		anstyle-1.0.7 \
+		arbitrary-1.3.2 \
+		atty-0.2.14 \
+		autocfg-1.0.1 \
+		bit-set-0.5.3 \
+		bit-vec-0.6.3 \
+		bitflags-1.3.2 \
+		bitflags-2.6.0 \
+		bumpalo-3.16.0 \
+		cast-0.3.0 \
+		cfg-if-1.0.0 \
+		ciborium-0.2.2 \
+		ciborium-io-0.2.2 \
+		ciborium-ll-0.2.2 \
+		claim-0.5.0 \
+		clap-2.34.0 \
+		clap-4.5.9 \
+		clap_builder-4.5.9 \
+		clap_lex-0.7.1 \
+		criterion-0.5.1 \
+		criterion-plot-0.5.0 \
+		crossbeam-deque-0.8.5 \
+		crossbeam-epoch-0.9.18 \
+		crossbeam-utils-0.8.20 \
+		crunchy-0.2.2 \
+		csv-1.3.0 \
+		csv-core-0.1.11 \
+		either-1.13.0 \
+		equivalent-1.0.1 \
+		errno-0.3.9 \
+		fancy-regex-0.12.0 \
+		fastrand-2.1.0 \
+		half-2.4.1 \
+		hashbrown-0.14.5 \
+		heck-0.3.3 \
+		heck-0.4.1 \
+		hermit-abi-0.1.19 \
+		hermit-abi-0.3.9 \
+		honggfuzz-0.5.56 \
+		indexmap-2.2.6 \
+		indoc-2.0.5 \
+		is-terminal-0.4.12 \
+		itertools-0.10.5 \
+		itertools-0.12.1 \
+		itoa-1.0.11 \
+		js-sys-0.3.69 \
+		lazy_static-1.5.0 \
+		libc-0.2.155 \
+		libloading-0.8.5 \
+		linux-raw-sys-0.4.14 \
+		lock_api-0.4.6 \
+		log-0.4.22 \
+		memchr-2.7.4 \
+		memmap2-0.7.1 \
+		memmap2-0.9.4 \
+		memoffset-0.9.1 \
+		minimal-lexical-0.2.1 \
+		nom-7.1.3 \
+		num-traits-0.2.19 \
+		once_cell-1.19.0 \
+		oorandom-11.1.4 \
+		parking_lot-0.12.3 \
+		parking_lot_core-0.9.10 \
+		plotters-0.3.6 \
+		plotters-backend-0.3.6 \
+		plotters-svg-0.3.6 \
+		portable-atomic-1.7.0 \
+		proc-macro-error-1.0.4 \
+		proc-macro-error-attr-1.0.4 \
+		proc-macro2-1.0.86 \
+		pyo3-0.20.3 \
+		pyo3-build-config-0.20.3 \
+		pyo3-ffi-0.20.3 \
+		pyo3-macros-0.20.3 \
+		pyo3-macros-backend-0.20.3 \
+		quote-1.0.36 \
+		rayon-1.10.0 \
+		rayon-core-1.12.1 \
+		redox_syscall-0.5.3 \
+		regex-1.10.5 \
+		regex-automata-0.4.7 \
+		regex-syntax-0.8.4 \
+		rustc_version-0.4.0 \
+		rustix-0.38.34 \
+		ryu-1.0.18 \
+		same-file-1.0.6 \
+		scopeguard-1.2.0 \
+		semver-1.0.23 \
+		serde-1.0.204 \
+		serde_derive-1.0.204 \
+		serde_json-1.0.120 \
+		smallvec-1.13.2 \
+		strsim-0.8.0 \
+		structopt-0.3.26 \
+		structopt-derive-0.4.18 \
+		syn-1.0.109 \
+		syn-2.0.71 \
+		target-lexicon-0.12.15 \
+		tempfile-3.10.1 \
+		textwrap-0.11.0 \
+		thiserror-1.0.63 \
+		thiserror-impl-1.0.63 \
+		thread_local-1.1.8 \
+		tinytemplate-1.2.1 \
+		tinyvec-1.8.0 \
+		tinyvec_macros-0.1.1 \
+		unicode-ident-1.0.12 \
+		unicode-normalization-0.1.23 \
+		unicode-segmentation-1.11.0 \
+		unicode-width-0.1.13 \
+		unindent-0.2.3 \
+		vec_map-0.8.2 \
+		version_check-0.9.4 \
+		walkdir-2.5.0 \
+		wasm-bindgen-0.2.92 \
+		wasm-bindgen-backend-0.2.92 \
+		wasm-bindgen-macro-0.2.92 \
+		wasm-bindgen-macro-support-0.2.92 \
+		wasm-bindgen-shared-0.2.92 \
+		web-sys-0.3.69 \
+		winapi-0.3.9 \
+		winapi-i686-pc-windows-gnu-0.4.0 \
+		winapi-util-0.1.8 \
+		winapi-x86_64-pc-windows-gnu-0.4.0 \
+		windows-sys-0.52.0 \
+		windows-targets-0.52.6 \
+		windows_aarch64_gnullvm-0.52.6 \
+		windows_aarch64_msvc-0.52.6 \
+		windows_i686_gnu-0.52.6 \
+		windows_i686_gnullvm-0.52.6 \
+		windows_i686_msvc-0.52.6 \
+		windows_x86_64_gnu-0.52.6 \
+		windows_x86_64_gnullvm-0.52.6 \
+		windows_x86_64_msvc-0.52.6 \
+		yada-0.5.1
+
+#CARGO_CONFIGURE=	no
+CARGO_BUILD=		no
+CARGO_INSTALL=		no
+
+xpost-configure:
+	@(cd ${BUILD_WRKSRC}; ${SETENVI} ${WRK_ENV} ${MAKE_ENV} ${PYTHON_CMD} ${PYDISTUTILS_SETUP} ${PYDISTUTILS_CONFIGURE_TARGET} ${PYDISTUTILS_CONFIGUREARGS})
+
+post-install:
+	@${STRIP_CMD} ${STAGEDIR}${PYTHON_SITELIBDIR}/sudachipy/sudachipy${PYTHON_EXT_SUFFIX}.so
+
+# The sudachipy executable fails, see https://github.com/WorksApplications/sudachi.rs/issues/270
+
+.include <bsd.port.mk>
diff --git a/japanese/py-SudachiPy/distinfo b/japanese/py-SudachiPy/distinfo
new file mode 100644
index 000000000000..79f7ed7b5779
--- /dev/null
+++ b/japanese/py-SudachiPy/distinfo
@@ -0,0 +1,279 @@
+TIMESTAMP = 1721510048
+SHA256 (rust/crates/aho-corasick-1.1.3.crate) = 8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916
+SIZE (rust/crates/aho-corasick-1.1.3.crate) = 183311
+SHA256 (rust/crates/anes-0.1.6.crate) = 4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299
+SIZE (rust/crates/anes-0.1.6.crate) = 23857
+SHA256 (rust/crates/ansi_term-0.12.1.crate) = d52a9bb7ec0cf484c551830a7ce27bd20d67eac647e1befb56b0be4ee39a55d2
+SIZE (rust/crates/ansi_term-0.12.1.crate) = 24838
+SHA256 (rust/crates/anstyle-1.0.7.crate) = 038dfcf04a5feb68e9c60b21c9625a54c2c0616e79b72b0fd87075a056ae1d1b
+SIZE (rust/crates/anstyle-1.0.7.crate) = 15709
+SHA256 (rust/crates/arbitrary-1.3.2.crate) = 7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110
+SIZE (rust/crates/arbitrary-1.3.2.crate) = 32037
+SHA256 (rust/crates/atty-0.2.14.crate) = d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8
+SIZE (rust/crates/atty-0.2.14.crate) = 5470
+SHA256 (rust/crates/autocfg-1.0.1.crate) = cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a
+SIZE (rust/crates/autocfg-1.0.1.crate) = 12908
+SHA256 (rust/crates/bit-set-0.5.3.crate) = 0700ddab506f33b20a03b13996eccd309a48e5ff77d0d95926aa0210fb4e95f1
+SIZE (rust/crates/bit-set-0.5.3.crate) = 14470
+SHA256 (rust/crates/bit-vec-0.6.3.crate) = 349f9b6a179ed607305526ca489b34ad0a41aed5f7980fa90eb03160b69598fb
+SIZE (rust/crates/bit-vec-0.6.3.crate) = 19927
+SHA256 (rust/crates/bitflags-1.3.2.crate) = bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a
+SIZE (rust/crates/bitflags-1.3.2.crate) = 23021
+SHA256 (rust/crates/bitflags-2.6.0.crate) = b048fb63fd8b5923fc5aa7b340d8e156aec7ec02f0c78fa8a6ddc2613f6f71de
+SIZE (rust/crates/bitflags-2.6.0.crate) = 45357
+SHA256 (rust/crates/bumpalo-3.16.0.crate) = 79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c
+SIZE (rust/crates/bumpalo-3.16.0.crate) = 85677
+SHA256 (rust/crates/cast-0.3.0.crate) = 37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5
+SIZE (rust/crates/cast-0.3.0.crate) = 11452
+SHA256 (rust/crates/cfg-if-1.0.0.crate) = baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd
+SIZE (rust/crates/cfg-if-1.0.0.crate) = 7934
+SHA256 (rust/crates/ciborium-0.2.2.crate) = 42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e
+SIZE (rust/crates/ciborium-0.2.2.crate) = 35611
+SHA256 (rust/crates/ciborium-io-0.2.2.crate) = 05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757
+SIZE (rust/crates/ciborium-io-0.2.2.crate) = 6697
+SHA256 (rust/crates/ciborium-ll-0.2.2.crate) = 57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9
+SIZE (rust/crates/ciborium-ll-0.2.2.crate) = 14695
+SHA256 (rust/crates/claim-0.5.0.crate) = f81099d6bb72e1df6d50bb2347224b666a670912bb7f06dbe867a4a070ab3ce8
+SIZE (rust/crates/claim-0.5.0.crate) = 12858
+SHA256 (rust/crates/clap-2.34.0.crate) = a0610544180c38b88101fecf2dd634b174a62eef6946f84dfc6a7127512b381c
+SIZE (rust/crates/clap-2.34.0.crate) = 202210
+SHA256 (rust/crates/clap-4.5.9.crate) = 64acc1846d54c1fe936a78dc189c34e28d3f5afc348403f28ecf53660b9b8462
+SIZE (rust/crates/clap-4.5.9.crate) = 56348
+SHA256 (rust/crates/clap_builder-4.5.9.crate) = 6fb8393d67ba2e7bfaf28a23458e4e2b543cc73a99595511eb207fdb8aede942
+SIZE (rust/crates/clap_builder-4.5.9.crate) = 164088
+SHA256 (rust/crates/clap_lex-0.7.1.crate) = 4b82cf0babdbd58558212896d1a4272303a57bdb245c2bf1147185fb45640e70
+SIZE (rust/crates/clap_lex-0.7.1.crate) = 12766
+SHA256 (rust/crates/criterion-0.5.1.crate) = f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f
+SIZE (rust/crates/criterion-0.5.1.crate) = 110088
+SHA256 (rust/crates/criterion-plot-0.5.0.crate) = 6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1
+SIZE (rust/crates/criterion-plot-0.5.0.crate) = 22706
+SHA256 (rust/crates/crossbeam-deque-0.8.5.crate) = 613f8cc01fe9cf1a3eb3d7f488fd2fa8388403e97039e2f73692932e291a770d
+SIZE (rust/crates/crossbeam-deque-0.8.5.crate) = 21726
+SHA256 (rust/crates/crossbeam-epoch-0.9.18.crate) = 5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e
+SIZE (rust/crates/crossbeam-epoch-0.9.18.crate) = 46875
+SHA256 (rust/crates/crossbeam-utils-0.8.20.crate) = 22ec99545bb0ed0ea7bb9b8e1e9122ea386ff8a48c0922e43f36d45ab09e0e80
+SIZE (rust/crates/crossbeam-utils-0.8.20.crate) = 42487
+SHA256 (rust/crates/crunchy-0.2.2.crate) = 7a81dae078cea95a014a339291cec439d2f232ebe854a9d672b796c6afafa9b7
+SIZE (rust/crates/crunchy-0.2.2.crate) = 2995
+SHA256 (rust/crates/csv-1.3.0.crate) = ac574ff4d437a7b5ad237ef331c17ccca63c46479e5b5453eb8e10bb99a759fe
+SIZE (rust/crates/csv-1.3.0.crate) = 888212
+SHA256 (rust/crates/csv-core-0.1.11.crate) = 5efa2b3d7902f4b634a20cae3c9c4e6209dc4779feb6863329607560143efa70
+SIZE (rust/crates/csv-core-0.1.11.crate) = 25852
+SHA256 (rust/crates/either-1.13.0.crate) = 60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0
+SIZE (rust/crates/either-1.13.0.crate) = 19169
+SHA256 (rust/crates/equivalent-1.0.1.crate) = 5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5
+SIZE (rust/crates/equivalent-1.0.1.crate) = 6615
+SHA256 (rust/crates/errno-0.3.9.crate) = 534c5cf6194dfab3db3242765c03bbe257cf92f22b38f6bc0c58d59108a820ba
+SIZE (rust/crates/errno-0.3.9.crate) = 10690
+SHA256 (rust/crates/fancy-regex-0.12.0.crate) = 7493d4c459da9f84325ad297371a6b2b8a162800873a22e3b6b6512e61d18c05
+SIZE (rust/crates/fancy-regex-0.12.0.crate) = 84888
+SHA256 (rust/crates/fastrand-2.1.0.crate) = 9fc0510504f03c51ada170672ac806f1f105a88aa97a5281117e1ddc3368e51a
+SIZE (rust/crates/fastrand-2.1.0.crate) = 14907
+SHA256 (rust/crates/half-2.4.1.crate) = 6dd08c532ae367adf81c312a4580bc67f1d0fe8bc9c460520283f4c0ff277888
+SIZE (rust/crates/half-2.4.1.crate) = 50892
+SHA256 (rust/crates/hashbrown-0.14.5.crate) = e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1
+SIZE (rust/crates/hashbrown-0.14.5.crate) = 141498
+SHA256 (rust/crates/heck-0.3.3.crate) = 6d621efb26863f0e9924c6ac577e8275e5e6b77455db64ffa6c65c904e9e132c
+SIZE (rust/crates/heck-0.3.3.crate) = 10260
+SHA256 (rust/crates/heck-0.4.1.crate) = 95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8
+SIZE (rust/crates/heck-0.4.1.crate) = 11567
+SHA256 (rust/crates/hermit-abi-0.1.19.crate) = 62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33
+SIZE (rust/crates/hermit-abi-0.1.19.crate) = 9979
+SHA256 (rust/crates/hermit-abi-0.3.9.crate) = d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024
+SIZE (rust/crates/hermit-abi-0.3.9.crate) = 16165
+SHA256 (rust/crates/honggfuzz-0.5.56.crate) = 7c76b6234c13c9ea73946d1379d33186151148e0da231506b964b44f3d023505
+SIZE (rust/crates/honggfuzz-0.5.56.crate) = 4335114
+SHA256 (rust/crates/indexmap-2.2.6.crate) = 168fb715dda47215e360912c096649d23d58bf392ac62f73919e831745e40f26
+SIZE (rust/crates/indexmap-2.2.6.crate) = 82420
+SHA256 (rust/crates/indoc-2.0.5.crate) = b248f5224d1d606005e02c97f5aa4e88eeb230488bcc03bc9ca4d7991399f2b5
+SIZE (rust/crates/indoc-2.0.5.crate) = 14396
+SHA256 (rust/crates/is-terminal-0.4.12.crate) = f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b
+SIZE (rust/crates/is-terminal-0.4.12.crate) = 7470
+SHA256 (rust/crates/itertools-0.10.5.crate) = b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473
+SIZE (rust/crates/itertools-0.10.5.crate) = 115354
+SHA256 (rust/crates/itertools-0.12.1.crate) = ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569
+SIZE (rust/crates/itertools-0.12.1.crate) = 137761
+SHA256 (rust/crates/itoa-1.0.11.crate) = 49f1f14873335454500d59611f1cf4a4b0f786f9ac11f4312a78e4cf2566695b
+SIZE (rust/crates/itoa-1.0.11.crate) = 10563
+SHA256 (rust/crates/js-sys-0.3.69.crate) = 29c15563dc2726973df627357ce0c9ddddbea194836909d655df6a75d2cf296d
+SIZE (rust/crates/js-sys-0.3.69.crate) = 81083
+SHA256 (rust/crates/lazy_static-1.5.0.crate) = bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe
+SIZE (rust/crates/lazy_static-1.5.0.crate) = 14025
+SHA256 (rust/crates/libc-0.2.155.crate) = 97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c
+SIZE (rust/crates/libc-0.2.155.crate) = 743539
+SHA256 (rust/crates/libloading-0.8.5.crate) = 4979f22fdb869068da03c9f7528f8297c6fd2606bc3a4affe42e6a823fdb8da4
+SIZE (rust/crates/libloading-0.8.5.crate) = 28902
+SHA256 (rust/crates/linux-raw-sys-0.4.14.crate) = 78b3ae25bc7c8c38cec158d1f2757ee79e9b3740fbc7ccf0e59e4b08d793fa89
+SIZE (rust/crates/linux-raw-sys-0.4.14.crate) = 1826665
+SHA256 (rust/crates/lock_api-0.4.6.crate) = 88943dd7ef4a2e5a4bfa2753aaab3013e34ce2533d1996fb18ef591e315e2b3b
+SIZE (rust/crates/lock_api-0.4.6.crate) = 25215
+SHA256 (rust/crates/log-0.4.22.crate) = a7a70ba024b9dc04c27ea2f0c0548feb474ec5c54bba33a7f72f873a39d07b24
+SIZE (rust/crates/log-0.4.22.crate) = 44027
+SHA256 (rust/crates/memchr-2.7.4.crate) = 78ca9ab1a0babb1e7d5695e3530886289c18cf2f87ec19a575a0abdce112e3a3
+SIZE (rust/crates/memchr-2.7.4.crate) = 96670
+SHA256 (rust/crates/memmap2-0.7.1.crate) = f49388d20533534cd19360ad3d6a7dadc885944aa802ba3995040c5ec11288c6
+SIZE (rust/crates/memmap2-0.7.1.crate) = 30741
+SHA256 (rust/crates/memmap2-0.9.4.crate) = fe751422e4a8caa417e13c3ea66452215d7d63e19e604f4980461212f3ae1322
+SIZE (rust/crates/memmap2-0.9.4.crate) = 32752
+SHA256 (rust/crates/memoffset-0.9.1.crate) = 488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a
+SIZE (rust/crates/memoffset-0.9.1.crate) = 9032
+SHA256 (rust/crates/minimal-lexical-0.2.1.crate) = 68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a
+SIZE (rust/crates/minimal-lexical-0.2.1.crate) = 94841
+SHA256 (rust/crates/nom-7.1.3.crate) = d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a
+SIZE (rust/crates/nom-7.1.3.crate) = 117570
+SHA256 (rust/crates/num-traits-0.2.19.crate) = 071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841
+SIZE (rust/crates/num-traits-0.2.19.crate) = 51631
+SHA256 (rust/crates/once_cell-1.19.0.crate) = 3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92
+SIZE (rust/crates/once_cell-1.19.0.crate) = 33046
+SHA256 (rust/crates/oorandom-11.1.4.crate) = b410bbe7e14ab526a0e86877eb47c6996a2bd7746f027ba551028c925390e4e9
+SIZE (rust/crates/oorandom-11.1.4.crate) = 10201
+SHA256 (rust/crates/parking_lot-0.12.3.crate) = f1bf18183cf54e8d6059647fc3063646a1801cf30896933ec2311622cc4b9a27
+SIZE (rust/crates/parking_lot-0.12.3.crate) = 41860
+SHA256 (rust/crates/parking_lot_core-0.9.10.crate) = 1e401f977ab385c9e4e3ab30627d6f26d00e2c73eef317493c4ec6d468726cf8
+SIZE (rust/crates/parking_lot_core-0.9.10.crate) = 32406
+SHA256 (rust/crates/plotters-0.3.6.crate) = a15b6eccb8484002195a3e44fe65a4ce8e93a625797a063735536fd59cb01cf3
+SIZE (rust/crates/plotters-0.3.6.crate) = 147577
+SHA256 (rust/crates/plotters-backend-0.3.6.crate) = 414cec62c6634ae900ea1c56128dfe87cf63e7caece0852ec76aba307cebadb7
+SIZE (rust/crates/plotters-backend-0.3.6.crate) = 13669
+SHA256 (rust/crates/plotters-svg-0.3.6.crate) = 81b30686a7d9c3e010b84284bdd26a29f2138574f52f5eb6f794fc0ad924e705
+SIZE (rust/crates/plotters-svg-0.3.6.crate) = 6944
+SHA256 (rust/crates/portable-atomic-1.7.0.crate) = da544ee218f0d287a911e9c99a39a8c9bc8fcad3cb8db5959940044ecfc67265
+SIZE (rust/crates/portable-atomic-1.7.0.crate) = 145385
+SHA256 (rust/crates/proc-macro-error-1.0.4.crate) = da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c
+SIZE (rust/crates/proc-macro-error-1.0.4.crate) = 25293
+SHA256 (rust/crates/proc-macro-error-attr-1.0.4.crate) = a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869
+SIZE (rust/crates/proc-macro-error-attr-1.0.4.crate) = 7971
+SHA256 (rust/crates/proc-macro2-1.0.86.crate) = 5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77
+SIZE (rust/crates/proc-macro2-1.0.86.crate) = 48958
+SHA256 (rust/crates/pyo3-0.20.3.crate) = 53bdbb96d49157e65d45cc287af5f32ffadd5f4761438b527b055fb0d4bb8233
+SIZE (rust/crates/pyo3-0.20.3.crate) = 434673
+SHA256 (rust/crates/pyo3-build-config-0.20.3.crate) = deaa5745de3f5231ce10517a1f5dd97d53e5a2fd77aa6b5842292085831d48d7
+SIZE (rust/crates/pyo3-build-config-0.20.3.crate) = 30060
+SHA256 (rust/crates/pyo3-ffi-0.20.3.crate) = 62b42531d03e08d4ef1f6e85a2ed422eb678b8cd62b762e53891c05faf0d4afa
+SIZE (rust/crates/pyo3-ffi-0.20.3.crate) = 65024
+SHA256 (rust/crates/pyo3-macros-0.20.3.crate) = 7305c720fa01b8055ec95e484a6eca7a83c841267f0dd5280f0c8b8551d2c158
+SIZE (rust/crates/pyo3-macros-0.20.3.crate) = 7920
+SHA256 (rust/crates/pyo3-macros-backend-0.20.3.crate) = 7c7e9b68bb9c3149c5b0cade5d07f953d6d125eb4337723c4ccdb665f1f96185
+SIZE (rust/crates/pyo3-macros-backend-0.20.3.crate) = 49797
+SHA256 (rust/crates/quote-1.0.36.crate) = 0fa76aaf39101c457836aec0ce2316dbdc3ab723cdda1c6bd4e6ad4208acaca7
+SIZE (rust/crates/quote-1.0.36.crate) = 28507
+SHA256 (rust/crates/rayon-1.10.0.crate) = b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa
+SIZE (rust/crates/rayon-1.10.0.crate) = 180155
+SHA256 (rust/crates/rayon-core-1.12.1.crate) = 1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2
+SIZE (rust/crates/rayon-core-1.12.1.crate) = 70701
+SHA256 (rust/crates/redox_syscall-0.5.3.crate) = 2a908a6e00f1fdd0dfd9c0eb08ce85126f6d8bbda50017e74bc4a4b7d4a926a4
+SIZE (rust/crates/redox_syscall-0.5.3.crate) = 23830
+SHA256 (rust/crates/regex-1.10.5.crate) = b91213439dad192326a0d7c6ee3955910425f441d7038e0d6933b0aec5c4517f
+SIZE (rust/crates/regex-1.10.5.crate) = 253805
+SHA256 (rust/crates/regex-automata-0.4.7.crate) = 38caf58cc5ef2fed281f89292ef23f6365465ed9a41b7a7754eb4e26496c92df
+SIZE (rust/crates/regex-automata-0.4.7.crate) = 617582
+SHA256 (rust/crates/regex-syntax-0.8.4.crate) = 7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b
+SIZE (rust/crates/regex-syntax-0.8.4.crate) = 347577
+SHA256 (rust/crates/rustc_version-0.4.0.crate) = bfa0f585226d2e68097d4f95d113b15b83a82e819ab25717ec0590d9584ef366
+SIZE (rust/crates/rustc_version-0.4.0.crate) = 12175
+SHA256 (rust/crates/rustix-0.38.34.crate) = 70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f
+SIZE (rust/crates/rustix-0.38.34.crate) = 365160
+SHA256 (rust/crates/ryu-1.0.18.crate) = f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f
+SIZE (rust/crates/ryu-1.0.18.crate) = 47713
+SHA256 (rust/crates/same-file-1.0.6.crate) = 93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502
+SIZE (rust/crates/same-file-1.0.6.crate) = 10183
+SHA256 (rust/crates/scopeguard-1.2.0.crate) = 94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49
+SIZE (rust/crates/scopeguard-1.2.0.crate) = 11619
+SHA256 (rust/crates/semver-1.0.23.crate) = 61697e0a1c7e512e84a621326239844a24d8207b4669b41bc18b32ea5cbf988b
+SIZE (rust/crates/semver-1.0.23.crate) = 30622
+SHA256 (rust/crates/serde-1.0.204.crate) = bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12
+SIZE (rust/crates/serde-1.0.204.crate) = 78253
+SHA256 (rust/crates/serde_derive-1.0.204.crate) = e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222
+SIZE (rust/crates/serde_derive-1.0.204.crate) = 55871
+SHA256 (rust/crates/serde_json-1.0.120.crate) = 4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5
+SIZE (rust/crates/serde_json-1.0.120.crate) = 147062
+SHA256 (rust/crates/smallvec-1.13.2.crate) = 3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67
+SIZE (rust/crates/smallvec-1.13.2.crate) = 35216
+SHA256 (rust/crates/strsim-0.8.0.crate) = 8ea5119cdb4c55b55d432abb513a0429384878c15dde60cc77b1c99de1a95a6a
+SIZE (rust/crates/strsim-0.8.0.crate) = 9309
+SHA256 (rust/crates/structopt-0.3.26.crate) = 0c6b5c64445ba8094a6ab0c3cd2ad323e07171012d9c98b0b15651daf1787a10
+SIZE (rust/crates/structopt-0.3.26.crate) = 53798
+SHA256 (rust/crates/structopt-derive-0.4.18.crate) = dcb5ae327f9cc13b68763b5749770cb9e048a99bd9dfdfa58d0cf05d5f64afe0
+SIZE (rust/crates/structopt-derive-0.4.18.crate) = 20996
+SHA256 (rust/crates/syn-1.0.109.crate) = 72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237
+SIZE (rust/crates/syn-1.0.109.crate) = 237611
+SHA256 (rust/crates/syn-2.0.71.crate) = b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462
+SIZE (rust/crates/syn-2.0.71.crate) = 266398
+SHA256 (rust/crates/target-lexicon-0.12.15.crate) = 4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2
+SIZE (rust/crates/target-lexicon-0.12.15.crate) = 26384
+SHA256 (rust/crates/tempfile-3.10.1.crate) = 85b77fafb263dd9d05cbeac119526425676db3784113aa9295c88498cbf8bff1
+SIZE (rust/crates/tempfile-3.10.1.crate) = 33653
+SHA256 (rust/crates/textwrap-0.11.0.crate) = d326610f408c7a4eb6f51c37c330e496b08506c9457c9d34287ecc38809fb060
+SIZE (rust/crates/textwrap-0.11.0.crate) = 17322
+SHA256 (rust/crates/thiserror-1.0.63.crate) = c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724
+SIZE (rust/crates/thiserror-1.0.63.crate) = 21537
+SHA256 (rust/crates/thiserror-impl-1.0.63.crate) = a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261
+SIZE (rust/crates/thiserror-impl-1.0.63.crate) = 16047
+SHA256 (rust/crates/thread_local-1.1.8.crate) = 8b9ef9bad013ada3808854ceac7b46812a6465ba368859a37e2100283d2d719c
+SIZE (rust/crates/thread_local-1.1.8.crate) = 13962
+SHA256 (rust/crates/tinytemplate-1.2.1.crate) = be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc
+SIZE (rust/crates/tinytemplate-1.2.1.crate) = 26490
+SHA256 (rust/crates/tinyvec-1.8.0.crate) = 445e881f4f6d382d5f27c034e25eb92edd7c784ceab92a0937db7f2e9471b938
+SIZE (rust/crates/tinyvec-1.8.0.crate) = 46796
+SHA256 (rust/crates/tinyvec_macros-0.1.1.crate) = 1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20
+SIZE (rust/crates/tinyvec_macros-0.1.1.crate) = 5865
+SHA256 (rust/crates/unicode-ident-1.0.12.crate) = 3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b
+SIZE (rust/crates/unicode-ident-1.0.12.crate) = 42168
+SHA256 (rust/crates/unicode-normalization-0.1.23.crate) = a56d1686db2308d901306f92a263857ef59ea39678a5458e7cb17f01415101f5
+SIZE (rust/crates/unicode-normalization-0.1.23.crate) = 122649
+SHA256 (rust/crates/unicode-segmentation-1.11.0.crate) = d4c87d22b6e3f4a18d4d40ef354e97c90fcb14dd91d7dc0aa9d8a1172ebf7202
+SIZE (rust/crates/unicode-segmentation-1.11.0.crate) = 102740
+SHA256 (rust/crates/unicode-width-0.1.13.crate) = 0336d538f7abc86d282a4189614dfaa90810dfc2c6f6427eaf88e16311dd225d
+SIZE (rust/crates/unicode-width-0.1.13.crate) = 457228
+SHA256 (rust/crates/unindent-0.2.3.crate) = c7de7d73e1754487cb58364ee906a499937a0dfabd86bcb980fa99ec8c8fa2ce
+SIZE (rust/crates/unindent-0.2.3.crate) = 7306
+SHA256 (rust/crates/vec_map-0.8.2.crate) = f1bddf1187be692e79c5ffeab891132dfb0f236ed36a43c7ed39f1165ee20191
+SIZE (rust/crates/vec_map-0.8.2.crate) = 14466
+SHA256 (rust/crates/version_check-0.9.4.crate) = 49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f
+SIZE (rust/crates/version_check-0.9.4.crate) = 14895
+SHA256 (rust/crates/walkdir-2.5.0.crate) = 29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b
+SIZE (rust/crates/walkdir-2.5.0.crate) = 23951
+SHA256 (rust/crates/wasm-bindgen-0.2.92.crate) = 4be2531df63900aeb2bca0daaaddec08491ee64ceecbee5076636a3b026795a8
+SIZE (rust/crates/wasm-bindgen-0.2.92.crate) = 184119
+SHA256 (rust/crates/wasm-bindgen-backend-0.2.92.crate) = 614d787b966d3989fa7bb98a654e369c762374fd3213d212cfc0251257e747da
+SIZE (rust/crates/wasm-bindgen-backend-0.2.92.crate) = 28348
+SHA256 (rust/crates/wasm-bindgen-macro-0.2.92.crate) = a1f8823de937b71b9460c0c34e25f3da88250760bec0ebac694b49997550d726
+SIZE (rust/crates/wasm-bindgen-macro-0.2.92.crate) = 13835
+SHA256 (rust/crates/wasm-bindgen-macro-support-0.2.92.crate) = e94f17b526d0a461a191c78ea52bbce64071ed5c04c9ffe424dcb38f74171bb7
+SIZE (rust/crates/wasm-bindgen-macro-support-0.2.92.crate) = 20092
+SHA256 (rust/crates/wasm-bindgen-shared-0.2.92.crate) = af190c94f2773fdb3729c55b007a722abb5384da03bc0986df4c289bf5567e96
+SIZE (rust/crates/wasm-bindgen-shared-0.2.92.crate) = 7263
+SHA256 (rust/crates/web-sys-0.3.69.crate) = 77afa9a11836342370f4817622a2f0f418b134426d91a82dfb48f532d2ec13ef
+SIZE (rust/crates/web-sys-0.3.69.crate) = 728877
+SHA256 (rust/crates/winapi-0.3.9.crate) = 5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419
+SIZE (rust/crates/winapi-0.3.9.crate) = 1200382
+SHA256 (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6
+SIZE (rust/crates/winapi-i686-pc-windows-gnu-0.4.0.crate) = 2918815
+SHA256 (rust/crates/winapi-util-0.1.8.crate) = 4d4cc384e1e73b93bafa6fb4f1df8c41695c8a91cf9c4c64358067d15a7b6c6b
+SIZE (rust/crates/winapi-util-0.1.8.crate) = 12416
+SHA256 (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f
+SIZE (rust/crates/winapi-x86_64-pc-windows-gnu-0.4.0.crate) = 2947998
+SHA256 (rust/crates/windows-sys-0.52.0.crate) = 282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d
+SIZE (rust/crates/windows-sys-0.52.0.crate) = 2576877
+SHA256 (rust/crates/windows-targets-0.52.6.crate) = 9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973
+SIZE (rust/crates/windows-targets-0.52.6.crate) = 6403
+SHA256 (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3
+SIZE (rust/crates/windows_aarch64_gnullvm-0.52.6.crate) = 435718
+SHA256 (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469
+SIZE (rust/crates/windows_aarch64_msvc-0.52.6.crate) = 832615
+SHA256 (rust/crates/windows_i686_gnu-0.52.6.crate) = 8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b
+SIZE (rust/crates/windows_i686_gnu-0.52.6.crate) = 880402
+SHA256 (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66
+SIZE (rust/crates/windows_i686_gnullvm-0.52.6.crate) = 475940
+SHA256 (rust/crates/windows_i686_msvc-0.52.6.crate) = 240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66
+SIZE (rust/crates/windows_i686_msvc-0.52.6.crate) = 901163
+SHA256 (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78
+SIZE (rust/crates/windows_x86_64_gnu-0.52.6.crate) = 836363
+SHA256 (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d
+SIZE (rust/crates/windows_x86_64_gnullvm-0.52.6.crate) = 435707
+SHA256 (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec
+SIZE (rust/crates/windows_x86_64_msvc-0.52.6.crate) = 832564
+SHA256 (rust/crates/yada-0.5.1.crate) = aed111bd9e48a802518765906cbdadf0b45afb72b9c81ab049a3b86252adffdd
+SIZE (rust/crates/yada-0.5.1.crate) = 13682
+SHA256 (WorksApplications-sudachi.rs-v0.6.8_GH0.tar.gz) = 2ef2406c608305bac15576a34991d7694766650659765c9cd2d78e932593eebe
+SIZE (WorksApplications-sudachi.rs-v0.6.8_GH0.tar.gz) = 296214
diff --git a/japanese/py-SudachiPy/files/patch-sudachi-lib_src_plugin_loader.rs b/japanese/py-SudachiPy/files/patch-sudachi-lib_src_plugin_loader.rs
new file mode 100644
index 000000000000..b5c3c4c78002
--- /dev/null
+++ b/japanese/py-SudachiPy/files/patch-sudachi-lib_src_plugin_loader.rs
@@ -0,0 +1,11 @@
+--- ../sudachi/src/plugin/loader.rs.orig	2024-07-20 17:27:30 UTC
++++ ../sudachi/src/plugin/loader.rs
+@@ -52,7 +52,7 @@ struct PluginLoader<'a, 'b, T: PluginCategory + ?Sized
+     plugins: Vec<<T as PluginCategory>::BoxType>,
+ }
+ 
+-#[cfg(target_os = "linux")]
++#[cfg(any(target_os = "linux", target_os = "freebsd"))]
+ fn make_system_specific_name(s: &str) -> String {
+     format!("lib{}.so", s)
+ }
diff --git a/japanese/py-SudachiPy/pkg-descr b/japanese/py-SudachiPy/pkg-descr
new file mode 100644
index 000000000000..2cced89fa2d4
--- /dev/null
+++ b/japanese/py-SudachiPy/pkg-descr
@@ -0,0 +1,4 @@
+SudaciPy is a Python bindings of sudachi.rs
+
+sudachi.rs is a Rust implementation of Sudachi, a Japanese morphological
+analyzer.