diff options
Diffstat (limited to 'dev-python/tree-sitter/tree-sitter-0.20.4.ebuild')
-rw-r--r-- | dev-python/tree-sitter/tree-sitter-0.20.4.ebuild | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/dev-python/tree-sitter/tree-sitter-0.20.4.ebuild b/dev-python/tree-sitter/tree-sitter-0.20.4.ebuild new file mode 100644 index 000000000000..32d2d13d9c6d --- /dev/null +++ b/dev-python/tree-sitter/tree-sitter-0.20.4.ebuild @@ -0,0 +1,80 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{10..12} ) + +inherit distutils-r1 + +# If you get failures from using the latest, check the language used for +# the failing test(s) and roll back the individual fixtures one-by-one. +declare -A TEST_FIXTURES=( + ["embedded-template"]="0.20.0" + ["html"]="0.20.0" + ["javascript"]="0.20.1" + ["json"]="0.20.2" + ["python"]="0.20.4" + ["rust"]="0.20.4" +) + +DESCRIPTION="Python bindings to the Tree-sitter parsing library" +HOMEPAGE=" + https://github.com/tree-sitter/py-tree-sitter/ + https://pypi.org/project/tree-sitter/ +" +SRC_URI=" + https://github.com/tree-sitter/py-tree-sitter/archive/v${PV}.tar.gz + -> ${P}.gh.tar.gz +" +SRC_URI+=" test? (" +for fixture in "${!TEST_FIXTURES[@]}" ; do + SRC_URI+=" + https://github.com/tree-sitter/tree-sitter-${fixture}/archive/v${TEST_FIXTURES[${fixture}]}.tar.gz + -> tree-sitter-${fixture}-${TEST_FIXTURES[${fixture}]}.tar.gz + " +done +SRC_URI+=" )" +S=${WORKDIR}/py-${P} + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~x64-macos" + +DEPEND="dev-libs/tree-sitter:=" +RDEPEND="${DEPEND} + $(python_gen_cond_dep ' + dev-python/setuptools[${PYTHON_USEDEP}] + ' 3.12) +" + +distutils_enable_tests unittest + +PATCHES=( + "${FILESDIR}"/tree-sitter-0.19.0_p20210506-unbundle.patch +) + +src_unpack() { + default + rmdir "${S}/tree_sitter/core" || die + + if use test; then + mkdir "${S}/tests/fixtures" || die + local fixture + for fixture in "${!TEST_FIXTURES[@]}" ; do + mv "tree-sitter-${fixture}-${TEST_FIXTURES[${fixture}]}" "${S}/tests/fixtures/tree-sitter-${fixture}" || die + done + + # In 0.20.4, this test has a comment saying it's broken, and changing + # tree-sitter-python (grammar) versions doesn't help, so presumably + # newer dev-libs/tree-sitter broke it. Revisit on a newer version. + sed -i -e 's/def test_point_range_captures/def _test_point_range_captures/' "${S}/tests/test_tree_sitter.py" || die + fi +} + +src_test() { + rm -r tree_sitter || die + distutils-r1_src_test +} |