Skip to content

Commit

Permalink
dev-vcs/pre-commit: drop dependency on dev-python/toml
Browse files Browse the repository at this point in the history
Backported to 2.20.0 from upstream Git master branch.

Bug: https://bugs.gentoo.org/878677
Signed-off-by: Marek Szuba <[email protected]>
  • Loading branch information
Marek Szuba committed Oct 30, 2022
1 parent 7b49880 commit 37fe831
Show file tree
Hide file tree
Showing 3 changed files with 136 additions and 0 deletions.
1 change: 1 addition & 0 deletions dev-vcs/pre-commit/Manifest
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
DIST pre-commit-2.20.0.gh.tar.gz 266604 BLAKE2B 470f032e6d5bfcdd9ac8ba8f37d4323b601da0c82bcd524ffc575dc688fe81ad326a1f6a8ddd03da6e37130319ee40070c03d9789cd6e0e4b427a1d6e646416e SHA512 b1da558a0e5d8f2f655427089f1d0b11b01ad7513ece7a0b3b67c33529cf3584edba558c78704e6da6ca18876b1d6c0fa8698e01fd7c2439b8d4dc0a93961e52
DIST pre-commit-2.20.0.tar.gz 266604 BLAKE2B 470f032e6d5bfcdd9ac8ba8f37d4323b601da0c82bcd524ffc575dc688fe81ad326a1f6a8ddd03da6e37130319ee40070c03d9789cd6e0e4b427a1d6e646416e SHA512 b1da558a0e5d8f2f655427089f1d0b11b01ad7513ece7a0b3b67c33529cf3584edba558c78704e6da6ca18876b1d6c0fa8698e01fd7c2439b8d4dc0a93961e52
81 changes: 81 additions & 0 deletions dev-vcs/pre-commit/files/pre-commit-2.20.0-no_toml.patch
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
Backported upstream commit e703982de45ac64492897b25fa4edbdb8da10e62.

--- a/pre_commit/languages/rust.py
+++ b/pre_commit/languages/rust.py
@@ -5,8 +5,6 @@
from typing import Generator
from typing import Sequence

-import toml
-
import pre_commit.constants as C
from pre_commit.envcontext import envcontext
from pre_commit.envcontext import PatchesT
@@ -38,18 +36,16 @@


def _add_dependencies(
- cargo_toml_path: str,
+ prefix: Prefix,
additional_dependencies: set[str],
) -> None:
- with open(cargo_toml_path, 'r+') as f:
- cargo_toml = toml.load(f)
- cargo_toml.setdefault('dependencies', {})
- for dep in additional_dependencies:
- name, _, spec = dep.partition(':')
- cargo_toml['dependencies'][name] = spec or '*'
- f.seek(0)
- toml.dump(cargo_toml, f)
- f.truncate()
+ crates = []
+ for dep in additional_dependencies:
+ name, _, spec = dep.partition(':')
+ crate = f'{name}@{spec or "*"}'
+ crates.append(crate)
+
+ helpers.run_setup_cmd(prefix, ('cargo', 'add', *crates))


def install_environment(
@@ -77,9 +73,6 @@
}
lib_deps = set(additional_dependencies) - cli_deps

- if len(lib_deps) > 0:
- _add_dependencies(prefix.path('Cargo.toml'), lib_deps)
-
with clean_path_on_failure(directory):
packages_to_install: set[tuple[str, ...]] = {('--path', '.')}
for cli_dep in cli_deps:
@@ -90,6 +83,9 @@
else:
packages_to_install.add((package,))

+ if len(lib_deps) > 0:
+ _add_dependencies(prefix, lib_deps)
+
for args in packages_to_install:
cmd_output_b(
'cargo', 'install', '--bins', '--root', directory, *args,
--- a/setup.cfg
+++ b/setup.cfg
@@ -27,7 +27,6 @@
identify>=1.0.0
nodeenv>=0.11.1
pyyaml>=5.1
- toml
virtualenv>=20.0.8
importlib-metadata;python_version<"3.8"
python_requires = >=3.7
--- a/tests/repository_test.py
+++ b/tests/repository_test.py
@@ -485,7 +485,7 @@
path = make_repo(tempdir_factory, 'rust_hooks_repo')
config = make_config_from_repo(path)
# A small rust package with no dependencies.
- deps = ['shellharden:3.1.0']
+ deps = ['shellharden:3.1.0', 'git-version']
config['hooks'][0]['additional_dependencies'] = deps
hook = _get_hook(config, store, 'rust-hook')
binaries = os.listdir(
54 changes: 54 additions & 0 deletions dev-vcs/pre-commit/pre-commit-2.20.0-r1.ebuild
Original file line number Diff line number Diff line change
@@ -0,0 +1,54 @@
# Copyright 1999-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=8

PYTHON_COMPAT=( python3_{8..11} )
DISTUTILS_SINGLE_IMPL=1
DISTUTILS_USE_PEP517=setuptools
PYTHON_REQ_USE="sqlite"

inherit distutils-r1

DESCRIPTION="A framework for managing and maintaining multi-language Git pre-commit hooks"
HOMEPAGE="https://pre-commit.com/"
SRC_URI="https://github.com/${PN}/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.gh.tar.gz"

LICENSE="MIT"
SLOT="0"
KEYWORDS="~amd64 ~hppa ~ppc ~ppc64 ~x86"

RDEPEND="dev-vcs/git
$(python_gen_cond_dep '
>=dev-python/cfgv-2.0.0[${PYTHON_USEDEP}]
>=dev-python/identify-1.0.0[${PYTHON_USEDEP}]
>=dev-python/nodeenv-0.11.1[${PYTHON_USEDEP}]
>=dev-python/pyyaml-5.1[${PYTHON_USEDEP}]
>=dev-python/virtualenv-20.0.8[${PYTHON_USEDEP}]
')"
BDEPEND="test? (
$(python_gen_cond_dep '
dev-python/pytest-env[${PYTHON_USEDEP}]
dev-python/re-assert[${PYTHON_USEDEP}]
')
)"

PATCHES=(
"${FILESDIR}"/${PN}-2.20.0-no_toml.patch
)

DOCS=( CHANGELOG.md CONTRIBUTING.md README.md )

# The former two require a boatload of dependencies (e.g. Conda, Go, R and more) in order to run
# and while some of them do include "skip if not found" logic, most of them do not.
# The latter consistently fail with
# Calling "git rev-parse" fails with "fatal: not a git repository (or any of the parent directories): .git".
# including with the sandbox disabled and when run manually with tox.
EPYTEST_DESELECT=(
tests/languages/
tests/repository_test.py
tests/main_test.py::test_all_cmds
tests/main_test.py::test_try_repo
)

distutils_enable_tests pytest

0 comments on commit 37fe831

Please sign in to comment.