diff options
| author | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2025-09-16 06:59:58 +0000 |
|---|---|---|
| committer | Liguros - Gitlab CI/CD [develop] <gitlab@liguros.net> | 2025-09-16 06:59:58 +0000 |
| commit | 890b4527a2b4a35e821f750ad70f9fbfbe7d2239 (patch) | |
| tree | 353bf478ec8596f35f61d364a42945e7a2711682 /dev-python | |
| parent | 459468f49c11794ed867d2ad7055bb716a14c6b2 (diff) | |
| download | baldeagleos-repo-890b4527a2b4a35e821f750ad70f9fbfbe7d2239.tar.gz baldeagleos-repo-890b4527a2b4a35e821f750ad70f9fbfbe7d2239.tar.xz baldeagleos-repo-890b4527a2b4a35e821f750ad70f9fbfbe7d2239.zip | |
Adding metadata
Diffstat (limited to 'dev-python')
| -rw-r--r-- | dev-python/dulwich/Manifest | 1 | ||||
| -rw-r--r-- | dev-python/dulwich/dulwich-0.24.1.ebuild | 119 | ||||
| -rw-r--r-- | dev-python/dulwich/files/dulwich-0.24.1-test.patch | 220 | ||||
| -rw-r--r-- | dev-python/langdetect/Manifest | 2 | ||||
| -rw-r--r-- | dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch | 13 | ||||
| -rw-r--r-- | dev-python/langdetect/langdetect-1.0.9.ebuild | 6 | ||||
| -rw-r--r-- | dev-python/langdetect/metadata.xml | 10 | ||||
| -rw-r--r-- | dev-python/paramiko/paramiko-4.0.0-r1.ebuild | 63 | ||||
| -rw-r--r-- | dev-python/poetry-core/Manifest | 1 | ||||
| -rw-r--r-- | dev-python/poetry-core/poetry-core-2.2.0.ebuild | 66 | ||||
| -rw-r--r-- | dev-python/poetry/Manifest | 1 | ||||
| -rw-r--r-- | dev-python/poetry/poetry-2.2.0.ebuild | 86 | ||||
| -rw-r--r-- | dev-python/protobuf/files/protobuf-6.32.1-crash.patch | 33 | ||||
| -rw-r--r-- | dev-python/protobuf/protobuf-6.32.1-r1.ebuild | 159 |
14 files changed, 759 insertions, 21 deletions
diff --git a/dev-python/dulwich/Manifest b/dev-python/dulwich/Manifest index 317fbd85e85b..23e450dc466e 100644 --- a/dev-python/dulwich/Manifest +++ b/dev-python/dulwich/Manifest @@ -1,5 +1,6 @@ DIST autocfg-1.5.0.crate 18729 BLAKE2B 27580e39b366c6fca02c9db09997b6415c409f12068f1249184268bf96fd85ba659e25ec730f99e10caf452f96c486f3d7442bf09c4552b5f39519b21d6f88cc SHA512 f279856f234d39d369623576acf9546a1ca24d7fe449f36d4fb93ea75a7efaf2c4015b9616a69bbbed358c5e5882e16b045352f046aa4c049b3d13b1e8257b08 DIST dulwich-0.23.2.tar.gz 704361 BLAKE2B 2ba377c86a96069efa93f0e227297ba679bf04b346fe799f7b36a54bb38b51b9178c407d373a5f3e4adc4188d268ac3705a16ef98e84758cc3b8c2eaff1f5ecd SHA512 b3da400f7b89b0afd1ad14623a2a8765f2c36131f2b401ed2267637d961a65e9be32c6bb56c555d7c649d8d828088a83b433a66669b48e2a295b782fffcf9c22 +DIST dulwich-0.24.1.tar.gz 806136 BLAKE2B fc8f8534c8df24cdd3c2ec6b8ce0a8c85d68fbc12aba057d1853973ea7b4a2cc0637dafa8e7c4d369b08e2d2cf5e145d323af1f23ea2afd95195072e421b3963 SHA512 705096f4822fbf8530deed78bbf2c41bf9143b19432e93a428343d0faf1ae25f6865fa777c0f1c35c94f3e6bc8fd12ab1b6f6bdaa80694bde4926846ec4f1934 DIST heck-0.5.0.crate 11517 BLAKE2B 5365ec43b2239a76b33a174f1a4292ece4147f9d382a68c6c60db78fdc8bad0afb1d51a65bcb25e96675372faa4ea37c318265030b0546ba51942f7c929e1835 SHA512 f044fc9c3d22466629fd8f772ec0555350fd611c0cfadca51d99a3d2f10e155f77c1091916c8a95a6b9b499f366c2e99a5fbf45b010f988bfb9b2501bf9f6a76 DIST indoc-2.0.6.crate 17164 BLAKE2B 1a6cff95bc12ea885ef36b935bf4f1c7870d65be0ff31ffc67dcab904fa80215c1254c1803c5d0c5686252addfad3512e9e1ec79d3edcba026a879f4706926d1 SHA512 e2ea2e5c8226c802bbe0631c1a99d2edd088cbafbf978b2a7b71c7c7f47754c6d4653f466e286441b61cc46def1c7f7a02d4785caab93a61dd785211dba7d1a9 DIST libc-0.2.174.crate 779933 BLAKE2B 20ffcbbcad6961e732521940f0595039dc0576d85b2d3b2ad3f1decd37571132a4cd7505b2e108078a4379fc4cec46290b5633bcbcc6e7009c3b474c1a852628 SHA512 243f2ffd5741ef859e4dc5b7ee0396071943b1d10429efcaecb322957e256c4be88a7a649029dfd47e6456acc73ee257893fb6c4e8b4d0fe66a12bc5d1c13c73 diff --git a/dev-python/dulwich/dulwich-0.24.1.ebuild b/dev-python/dulwich/dulwich-0.24.1.ebuild new file mode 100644 index 000000000000..9decd98a7e08 --- /dev/null +++ b/dev-python/dulwich/dulwich-0.24.1.ebuild @@ -0,0 +1,119 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +CARGO_OPTIONAL=1 +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{9,10,11,12,13} ) + +CRATES=" + autocfg@1.5.0 + heck@0.5.0 + indoc@2.0.6 + libc@0.2.174 + memchr@2.7.5 + memoffset@0.9.1 + once_cell@1.21.3 + portable-atomic@1.11.1 + proc-macro2@1.0.95 + pyo3-build-config@0.25.1 + pyo3-ffi@0.25.1 + pyo3-macros-backend@0.25.1 + pyo3-macros@0.25.1 + pyo3@0.25.1 + quote@1.0.40 + syn@2.0.104 + target-lexicon@0.13.2 + unicode-ident@1.0.18 + unindent@0.2.4 +" + +inherit cargo distutils-r1 pypi + +DESCRIPTION="Pure-Python implementation of the Git file formats and protocols" +HOMEPAGE=" + https://github.com/jelmer/dulwich/ + https://pypi.org/project/dulwich/ +" +SRC_URI+=" + native-extensions? ( + ${CARGO_CRATE_URIS} + ) +" + +LICENSE="GPL-2+ Apache-2.0" +LICENSE+=" native-extensions? (" +# Dependent crate licenses +LICENSE+=" Apache-2.0-with-LLVM-exceptions MIT Unicode-3.0" +LICENSE+=" )" + +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" +IUSE="doc examples +native-extensions test" +RESTRICT="!test? ( test )" + +RDEPEND=" + >=dev-python/urllib3-1.25[${PYTHON_USEDEP}] +" +BDEPEND=" + native-extensions? ( + ${RUST_DEPEND} + dev-python/setuptools-rust[${PYTHON_USEDEP}] + ) + test? ( + ${RDEPEND} + dev-python/fastimport[${PYTHON_USEDEP}] + dev-python/gpgmepy[${PYTHON_USEDEP}] + dev-python/paramiko[${PYTHON_USEDEP},server(+)] + ) +" + +distutils_enable_sphinx docs + +PATCHES=( + "${FILESDIR}/${P}-test.patch" +) + +QA_FLAGS_IGNORED="usr/lib.*/py.*/site-packages/dulwich/_.*.so" + +pkg_setup() { + # avoid rust_pkg_setup which will die when there's no Rust found + if use native-extensions ; then + rust_pkg_setup # implicitly inherited through cargo + fi +} + +src_unpack() { + cargo_src_unpack +} + +python_compile() { + unset PURE + # TODO: enable Rust extensions + if ! use native-extensions; then + local -x PURE=1 + fi + + distutils-r1_python_compile +} + +python_test() { + # remove interference from the tests that do stuff like user.name + unset GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL GIT_AUTHOR_DATE + unset GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_COMMITTER_DATE + unset EMAIL + # Do not use make check which rebuilds the extension and uses -Werror, + # causing unexpected failures. + "${EPYTHON}" -m unittest -v tests.test_suite || + die "tests failed with ${EPYTHON}" +} + +python_install_all() { + if use examples; then + docompress -x "/usr/share/doc/${PF}/examples" + dodoc -r examples + fi + distutils-r1_python_install_all +} diff --git a/dev-python/dulwich/files/dulwich-0.24.1-test.patch b/dev-python/dulwich/files/dulwich-0.24.1-test.patch new file mode 100644 index 000000000000..46ac3317553a --- /dev/null +++ b/dev-python/dulwich/files/dulwich-0.24.1-test.patch @@ -0,0 +1,220 @@ +From 624c8f77ac17cf4e9d2017cf31a353eb9f3e41ec Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= <jelmer@jelmer.uk> +Date: Sat, 2 Aug 2025 15:10:36 +0100 +Subject: [PATCH] Fix worktree CLI tests to properly change to repository + directory + +The worktree CLI commands expect to be run from within a repository +directory. Updated the test methods to change to the repo directory +before running commands and restore the original directory afterward. + +diff --git a/tests/test_cli.py b/tests/test_cli.py +index 5394104e98..5322433d5c 100644 +--- a/tests/test_cli.py ++++ b/tests/test_cli.py +@@ -2338,12 +2338,18 @@ def setUp(self): + + def test_worktree_list(self): + """Test worktree list command.""" +- io.StringIO() +- cmd = cli.cmd_worktree() +- result = cmd.run(["list"]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ io.StringIO() ++ cmd = cli.cmd_worktree() ++ result = cmd.run(["list"]) + +- # Should list the main worktree +- self.assertEqual(result, 0) ++ # Should list the main worktree ++ self.assertEqual(result, 0) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_add(self): + """Test worktree add command.""" +@@ -2367,81 +2373,115 @@ def test_worktree_add_detached(self): + """Test worktree add with detached HEAD.""" + wt_path = os.path.join(self.test_dir, "detached-wt") + +- cmd = cli.cmd_worktree() +- with patch("sys.stdout", new_callable=io.StringIO): +- result = cmd.run(["add", "--detach", wt_path]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ cmd = cli.cmd_worktree() ++ with patch("sys.stdout", new_callable=io.StringIO): ++ result = cmd.run(["add", "--detach", wt_path]) + +- self.assertEqual(result, 0) +- self.assertTrue(os.path.exists(wt_path)) ++ self.assertEqual(result, 0) ++ self.assertTrue(os.path.exists(wt_path)) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_remove(self): + """Test worktree remove command.""" + # First add a worktree + wt_path = os.path.join(self.test_dir, "to-remove") +- cmd = cli.cmd_worktree() +- cmd.run(["add", wt_path]) + +- # Then remove it +- with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: +- result = cmd.run(["remove", wt_path]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ cmd = cli.cmd_worktree() ++ cmd.run(["add", wt_path]) + +- self.assertEqual(result, 0) +- self.assertFalse(os.path.exists(wt_path)) +- self.assertIn("Worktree removed:", mock_stdout.getvalue()) ++ # Then remove it ++ with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: ++ result = cmd.run(["remove", wt_path]) ++ ++ self.assertEqual(result, 0) ++ self.assertFalse(os.path.exists(wt_path)) ++ self.assertIn("Worktree removed:", mock_stdout.getvalue()) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_prune(self): + """Test worktree prune command.""" + # Add a worktree and manually remove it + wt_path = os.path.join(self.test_dir, "to-prune") +- cmd = cli.cmd_worktree() +- cmd.run(["add", wt_path]) +- shutil.rmtree(wt_path) + +- # Prune +- with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: +- result = cmd.run(["prune", "-v"]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ cmd = cli.cmd_worktree() ++ cmd.run(["add", wt_path]) ++ shutil.rmtree(wt_path) ++ ++ # Prune ++ with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: ++ result = cmd.run(["prune", "-v"]) + +- self.assertEqual(result, 0) +- output = mock_stdout.getvalue() +- self.assertIn("to-prune", output) ++ self.assertEqual(result, 0) ++ output = mock_stdout.getvalue() ++ self.assertIn("to-prune", output) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_lock_unlock(self): + """Test worktree lock and unlock commands.""" + # Add a worktree + wt_path = os.path.join(self.test_dir, "lockable") +- cmd = cli.cmd_worktree() +- cmd.run(["add", wt_path]) + +- # Lock it +- with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: +- result = cmd.run(["lock", wt_path, "--reason", "Testing"]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ cmd = cli.cmd_worktree() ++ cmd.run(["add", wt_path]) + +- self.assertEqual(result, 0) +- self.assertIn("Worktree locked:", mock_stdout.getvalue()) ++ # Lock it ++ with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: ++ result = cmd.run(["lock", wt_path, "--reason", "Testing"]) + +- # Unlock it +- with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: +- result = cmd.run(["unlock", wt_path]) ++ self.assertEqual(result, 0) ++ self.assertIn("Worktree locked:", mock_stdout.getvalue()) + +- self.assertEqual(result, 0) +- self.assertIn("Worktree unlocked:", mock_stdout.getvalue()) ++ # Unlock it ++ with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: ++ result = cmd.run(["unlock", wt_path]) ++ ++ self.assertEqual(result, 0) ++ self.assertIn("Worktree unlocked:", mock_stdout.getvalue()) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_move(self): + """Test worktree move command.""" + # Add a worktree + old_path = os.path.join(self.test_dir, "old-location") + new_path = os.path.join(self.test_dir, "new-location") +- cmd = cli.cmd_worktree() +- cmd.run(["add", old_path]) + +- # Move it +- with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: +- result = cmd.run(["move", old_path, new_path]) ++ # Change to repo directory ++ old_cwd = os.getcwd() ++ os.chdir(self.repo_path) ++ try: ++ cmd = cli.cmd_worktree() ++ cmd.run(["add", old_path]) ++ ++ # Move it ++ with patch("sys.stdout", new_callable=io.StringIO) as mock_stdout: ++ result = cmd.run(["move", old_path, new_path]) + +- self.assertEqual(result, 0) +- self.assertFalse(os.path.exists(old_path)) +- self.assertTrue(os.path.exists(new_path)) +- self.assertIn("Worktree moved:", mock_stdout.getvalue()) ++ self.assertEqual(result, 0) ++ self.assertFalse(os.path.exists(old_path)) ++ self.assertTrue(os.path.exists(new_path)) ++ self.assertIn("Worktree moved:", mock_stdout.getvalue()) ++ finally: ++ os.chdir(old_cwd) + + def test_worktree_invalid_command(self): + """Test invalid worktree subcommand.""" +From 4f52beca896bb66f9a0cd0e4117474af284158e8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jelmer=20Vernoo=C4=B3?= <jelmer@jelmer.uk> +Date: Mon, 15 Sep 2025 19:18:20 +0100 +Subject: [PATCH] Support TMPDIR as example system directory in symlink test + +Fixes #1885 +--- + tests/test_porcelain.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/tests/test_porcelain.py b/tests/test_porcelain.py +index f99b588f58..b3d10423d8 100644 +--- a/tests/test_porcelain.py ++++ b/tests/test_porcelain.py +@@ -1684,7 +1684,7 @@ def test_add_symlink_absolute_to_system(self) -> None: + symlink_target = os.environ["TEMP"] + else: + # On Unix-like systems, use /tmp +- symlink_target = "/tmp" ++ symlink_target = os.environ.get("TMPDIR", "/tmp") + os.symlink(symlink_target, symlink_path) + + # Adding a symlink to a directory outside the repo should raise ValueError diff --git a/dev-python/langdetect/Manifest b/dev-python/langdetect/Manifest index a11d7c268c91..d12ab8aeaca8 100644 --- a/dev-python/langdetect/Manifest +++ b/dev-python/langdetect/Manifest @@ -1 +1,3 @@ DIST langdetect-1.0.9.tar.gz 981474 BLAKE2B ea8a9c3f16a2987c080742473bff4f2c1503f53fb3c2b40b0b1d6212bb6133ea22dce7864ffcfb8968c3a46b157d45cb3e2cf6f84bdbed0266cc716a853b032c SHA512 7558d674c47b080c79e43a00a25d2c7f77188cf60bea2cecb3bebb803d75e1aa42b43c74bd26ea1b541f4cb927421908882cbec01a91f0913984217e71ccc8db +EBUILD langdetect-1.0.9.ebuild 494 BLAKE2B 9cd8a2a93a8d45bf51fe2324402b175d641762ea591fcb99459427f977a95eccffa6ca4777ca4df39814eea6eac62711567faa654456d32f79023a4685804504 SHA512 d973b85ba1a44389a4275f02a779a93a005f7c2e096467b94b072862e4984d5b42cf33f9821ac68aa5b85b12c98983a90b96049989d8c84497969174b6bb838e +MISC metadata.xml 457 BLAKE2B 630128a3e982b6d60cc7b9f74c79fcb5ee47a71a02c73a50af9da8cedb6fad8e20a7f74b881e5b25c6483b92c9edbd56552cd38b2d9cbfa8b3eb4530facea969 SHA512 674f4f5cd809c6c77bc14e0f5687fa972bef14bdfa0b3343c5d66b7163eef1906eb87d060c8288732f825de71dce291ad0b841a5f2f0dd230f957b5687e45d45 diff --git a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch b/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch deleted file mode 100644 index 637368d2f237..000000000000 --- a/dev-python/langdetect/files/langdetect-1.0.9-explicit-config.patch +++ /dev/null @@ -1,13 +0,0 @@ -Fix "Package 'langdetect.profiles' is absent from the `packages` configuration." - ---- a/setup.py -+++ b/setup.py -@@ -18,7 +18,7 @@ setup( - author_email='michal.danilak@gmail.com', - url='https://github.com/Mimino666/langdetect', - keywords='language detection library', -- packages=['langdetect', 'langdetect.utils', 'langdetect.tests'], -+ packages=['langdetect', 'langdetect.utils', 'langdetect.tests', 'langdetect.profiles'], - include_package_data=True, - install_requires=['six'], - license='MIT', diff --git a/dev-python/langdetect/langdetect-1.0.9.ebuild b/dev-python/langdetect/langdetect-1.0.9.ebuild index 98b2b0bf8d0b..56733bbffc48 100644 --- a/dev-python/langdetect/langdetect-1.0.9.ebuild +++ b/dev-python/langdetect/langdetect-1.0.9.ebuild @@ -1,9 +1,9 @@ -# Copyright 2022-2025 Gentoo Authors +# Copyright 2022 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 EAPI=8 -PYTHON_COMPAT=( python3_{11..14} ) +PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 ) DISTUTILS_USE_PEP517=setuptools inherit distutils-r1 pypi @@ -19,6 +19,4 @@ KEYWORDS="~amd64" RDEPEND="dev-python/six[${PYTHON_USEDEP}]" -PATCHES=( "${FILESDIR}/${P}-explicit-config.patch" ) - distutils_enable_tests unittest diff --git a/dev-python/langdetect/metadata.xml b/dev-python/langdetect/metadata.xml index c0f74ac187e2..020e07f2a3dd 100644 --- a/dev-python/langdetect/metadata.xml +++ b/dev-python/langdetect/metadata.xml @@ -2,9 +2,11 @@ <!DOCTYPE pkgmetadata SYSTEM "https://liguros.gitlab.io/dtd/metadata.dtd"> <pkgmetadata> <maintainer type="person"> - <email>pastalian46@gmail.com</email> - <name>Takuya Wakazono</name> + <email>marcin.deranek@slonko.net</email> + <name>Marcin Deranek</name> </maintainer> - - <origin>gentoo-guru-overlay</origin> + <upstream> + <bugs-to>https://github.com/Mimino666/langdetect/issues</bugs-to> + </upstream> + <origin>slonko-overlay</origin> </pkgmetadata>
\ No newline at end of file diff --git a/dev-python/paramiko/paramiko-4.0.0-r1.ebuild b/dev-python/paramiko/paramiko-4.0.0-r1.ebuild new file mode 100644 index 000000000000..d8979fe2af7a --- /dev/null +++ b/dev-python/paramiko/paramiko-4.0.0-r1.ebuild @@ -0,0 +1,63 @@ +# Copyright 1999-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{9,10,11,12,13} pypy3 ) +PYTHON_REQ_USE="threads(+)" + +inherit distutils-r1 + +DESCRIPTION="SSH2 protocol library" +HOMEPAGE=" + https://www.paramiko.org/ + https://github.com/paramiko/paramiko/ + https://pypi.org/project/paramiko/ +" +SRC_URI=" + https://github.com/paramiko/paramiko/archive/${PV}.tar.gz + -> ${P}.gh.tar.gz +" + +LICENSE="LGPL-2.1" +SLOT="0" +KEYWORDS="~amd64 ~arm ~arm64 ~loong ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos" +IUSE="examples" + +RDEPEND=" + >=dev-python/bcrypt-3.2[${PYTHON_USEDEP}] + >=dev-python/cryptography-3.3[${PYTHON_USEDEP}] + >=dev-python/pynacl-1.5[${PYTHON_USEDEP}] +" + +EPYTEST_PLUGINS=() +EPYTEST_RERUNS=5 +distutils_enable_tests pytest + +EPYTEST_DESELECT=( + # upstream doesn't really maintain the gssapi support + tests/test_gssapi.py + tests/test_kex_gss.py + tests/test_ssh_gss.py +) + +src_prepare() { + local PATCHES=( + "${FILESDIR}/${PN}-3.2.0-nih-test-deps.patch" + ) + + distutils-r1_src_prepare + + # optional dep + sed -i -e '/invoke/d' pyproject.toml || die +} + +python_install_all() { + distutils-r1_python_install_all + + if use examples; then + docinto examples + dodoc -r demos/* + fi +} diff --git a/dev-python/poetry-core/Manifest b/dev-python/poetry-core/Manifest index f0409bf13953..698bd47a0436 100644 --- a/dev-python/poetry-core/Manifest +++ b/dev-python/poetry-core/Manifest @@ -1 +1,2 @@ DIST poetry_core-2.1.3.tar.gz 365027 BLAKE2B d3cd1536a8466f784b2cd6a835997c480cdc11d24afe4e0b757879b2acc4795e33485fc9bf6adccf5afbf475d4b1748959fb146a6c01cf8508d6c27a7abe52e0 SHA512 eb82164aef3ce00fc14d55db8065b95feca15a78e1c69ca58c8c0b1018404b173a80c61d448513f938535a03e73df99978b51b3494065bd1c99bc8a14e224ba8 +DIST poetry_core-2.2.0.tar.gz 378727 BLAKE2B b3b122ed167d4160054e76842df49ad836f2f1139e5d39de461d38fd76110e1718fb912552c5d48aba2fc88eca01fa5c0c66a7aa4973d7968b000bbb61d4cfe9 SHA512 83a05d2e024e0a92a32ac8ea9a8a8b1313a6910f11e27b0a501703b0aac5c9f833a2b642403e28bb3ddffa7300c6f5e4533b604af40421033c2416e175a340c5 diff --git a/dev-python/poetry-core/poetry-core-2.2.0.ebuild b/dev-python/poetry-core/poetry-core-2.2.0.ebuild new file mode 100644 index 000000000000..f9a0a53c8140 --- /dev/null +++ b/dev-python/poetry-core/poetry-core-2.2.0.ebuild @@ -0,0 +1,66 @@ +# Copyright 2022-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=standalone +PYTHON_TESTED=( python3_{9,10,11,12,13} pypy3 ) +PYTHON_COMPAT=( "${PYTHON_TESTED[@]}" ) + +inherit distutils-r1 pypi + +DESCRIPTION="Poetry PEP 517 Build Backend" +HOMEPAGE=" + https://github.com/python-poetry/poetry-core/ + https://pypi.org/project/poetry-core/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos" +IUSE="test" +RESTRICT="!test? ( test )" + +# check inside vendors/pyproject.toml +# (note that some are indirect deps) +RDEPEND=" + >=dev-python/fastjsonschema-2.21.2[${PYTHON_USEDEP}] + >=dev-python/lark-1.2.2[${PYTHON_USEDEP}] + >=dev-python/packaging-25.0[${PYTHON_USEDEP}] +" +BDEPEND=" + ${RDEPEND} + test? ( + $(python_gen_cond_dep ' + dev-python/build[${PYTHON_USEDEP}] + dev-python/pytest-mock[${PYTHON_USEDEP}] + dev-python/tomli-w[${PYTHON_USEDEP}] + >=dev-python/trove-classifiers-2022.5.19[${PYTHON_USEDEP}] + >=dev-python/virtualenv-20.21[${PYTHON_USEDEP}] + dev-vcs/git + ' "${PYTHON_TESTED[@]}") + ) +" + +src_prepare() { + # remove vendoring of dependencies + rm -r src/poetry/core/_vendor || die + sed -e '/__vendor_site__/d' -i src/poetry/core/__init__.py || die + + distutils-r1_src_prepare +} + +python_test() { + if ! has "${EPYTHON/./_}" "${PYTHON_TESTED[@]}"; then + einfo "Skipping tests on ${EPYTHON} (unported deps)" + return + fi + + # Poetry expects test to be run inside a git repository, otherwise + # VCS-related logic doesn't get triggered. An empty repository + # suffices, though. + git init || die + + local EPYTEST_PLUGINS=( pytest-mock ) + epytest +} diff --git a/dev-python/poetry/Manifest b/dev-python/poetry/Manifest index 624c88466fa3..c920afdef349 100644 --- a/dev-python/poetry/Manifest +++ b/dev-python/poetry/Manifest @@ -1 +1,2 @@ DIST poetry-2.1.3.tar.gz 3435640 BLAKE2B cb4f9cd8613d5ef77b51a6431efdc9b2e32b296cd62353dcbe12d1fa4b98d3cdf04fc15eeecaddc41ae9074b131e4148193c11136c7e8956a5d26f5573800a0f SHA512 15c0bec8bf7922f277ec3e6f5f4aeca50488af6eb632d292a6140b351a28dad522d218f9abc70b3da80bf6db42f63947c9967edfb4dd29f0cf85d005171e6ee3 +DIST poetry-2.2.0.tar.gz 3441561 BLAKE2B d201cc5643dced3a89e6505ee1ec09524e5277cfc9f2697deeabff90484c563d9c43e0ef199cfaca081630419ab94ea5229b1127fb715867e6970b315e8c15ff SHA512 8677519a673534bebcea1f7d8894e4422e8f27d7cc29aa1361be2c15e8730c3b149c6086a475fefc11eb02e5268e3c2476a8acda92f090eac30737d9eac8e672 diff --git a/dev-python/poetry/poetry-2.2.0.ebuild b/dev-python/poetry/poetry-2.2.0.ebuild new file mode 100644 index 000000000000..feeb958c955b --- /dev/null +++ b/dev-python/poetry/poetry-2.2.0.ebuild @@ -0,0 +1,86 @@ +# Copyright 2023-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +DISTUTILS_USE_PEP517=poetry +PYTHON_COMPAT=( python3_{9,10,11,12,13} ) + +inherit distutils-r1 pypi + +DESCRIPTION="A frontend for poetry - a python dependency management and packaging tool" +HOMEPAGE=" + https://python-poetry.org/ + https://github.com/python-poetry/poetry + https://pypi.org/project/poetry/ +" + +LICENSE="MIT" +SLOT="0" +KEYWORDS="~amd64 ~arm64 ~x86" + +RDEPEND=" + >=dev-python/poetry-core-${PV}[${PYTHON_USEDEP}] + >=dev-python/poetry-plugin-export-1.6.0[${PYTHON_USEDEP}] + >=dev-python/build-1.2.1[${PYTHON_USEDEP}] + >=dev-python/cachecontrol-0.14.0[${PYTHON_USEDEP}] + >=dev-python/cleo-2.1.0[${PYTHON_USEDEP}] + >=dev-python/dulwich-0.24.0[${PYTHON_USEDEP}] + >=dev-python/fastjsonschema-2.18.0[${PYTHON_USEDEP}] + >=dev-python/findpython-0.6.2[${PYTHON_USEDEP}] + >=dev-python/installer-0.7.0[${PYTHON_USEDEP}] + >=dev-python/keyring-25.1.0[${PYTHON_USEDEP}] + >=dev-python/packaging-24.2[${PYTHON_USEDEP}] + >=dev-python/pbs-installer-2025.01.06[${PYTHON_USEDEP}] + >=dev-python/pkginfo-1.12[${PYTHON_USEDEP}] + >=dev-python/platformdirs-3.0.0[${PYTHON_USEDEP}] + >=dev-python/requests-2.26[${PYTHON_USEDEP}] + >=dev-python/requests-toolbelt-1.0.0[${PYTHON_USEDEP}] + >=dev-python/shellingham-1.5.0[${PYTHON_USEDEP}] + >=dev-python/tomlkit-0.11.6[${PYTHON_USEDEP}] + >=dev-python/trove-classifiers-2022.5.19[${PYTHON_USEDEP}] + >=dev-python/virtualenv-20.26.6[${PYTHON_USEDEP}] +" + +BDEPEND=" + test? ( + >=dev-python/deepdiff-6.3.1[${PYTHON_USEDEP}] + >=dev-python/httpretty-1.1[${PYTHON_USEDEP}] + >=dev-python/jaraco-classes-3.3.1[${PYTHON_USEDEP}] + >=dev-python/pytest-mock-3.9[${PYTHON_USEDEP}] + dev-python/pytest-rerunfailures[${PYTHON_USEDEP}] + ) +" + +EPYTEST_PLUGINS=( pytest-mock ) +EPYTEST_RERUNS=5 +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +EPYTEST_DESELECT=( + # Internal test for lockfile being up-to-date + # Meaningless, also sdist does not include lockfile + tests/installation/test_installer.py::test_not_fresh_lock + + # broken if poetry-plugin-export is installed + 'tests/console/test_application_command_not_found.py::test_application_command_not_found_messages[x-None]' + + # TODO + tests/console/commands/env/test_activate.py::test_no_additional_output_in_verbose_mode + tests/installation/test_executor.py::test_executor_known_hashes + tests/puzzle/test_provider.py::test_search_for_directory_setup_read_setup_with_no_dependencies + tests/utils/env/test_env_manager.py::test_create_venv_finds_no_python_executable + tests/utils/test_python_manager.py::test_python_get_preferred_default + 'tests/inspection/test_info.py::test_info_setup_missing_mandatory_should_trigger_pep517[name]' +) + +src_prepare() { + # unpin + sed -e 's:,<[0-9.]*::' -e 's:==\([0-9]\):>=\1:' -i pyproject.toml || die + + distutils-r1_src_prepare +} + +python_test() { + epytest -m "not network" +} diff --git a/dev-python/protobuf/files/protobuf-6.32.1-crash.patch b/dev-python/protobuf/files/protobuf-6.32.1-crash.patch new file mode 100644 index 000000000000..796d00c1805d --- /dev/null +++ b/dev-python/protobuf/files/protobuf-6.32.1-crash.patch @@ -0,0 +1,33 @@ +From d57d2708b371bda5e7212b0eca63091fa2d7ab42 Mon Sep 17 00:00:00 2001 +From: Oleh Prypin <oprypin@google.com> +Date: Mon, 15 Sep 2025 13:31:08 -0700 +Subject: [PATCH] Fix a crash that happens during shutdown due to looking up + modules in the cache + +The crash happens only since Python 3.13. Conveniently, Python 3.13 introduces a function to check if the interpreter is shutting down at the moment. + +There was a related issue https://github.com/protocolbuffers/protobuf/issues/22067 and related commit https://github.com/protocolbuffers/protobuf/commit/87de6f795f794f207c19ea5c887328fcbe35d518 +but it appears that the fix was incomplete. What actually causes a crash during shutdown is using `PyState_FindModule`, and `PyUpb_ModuleState_MaybeGet` still calls that anyway. + +PiperOrigin-RevId: 807361381 +--- + python/protobuf.c | 6 ++++++ + 1 file changed, 6 insertions(+) + +diff --git a/python/protobuf.c b/python/protobuf.c +index ff6bf7c0d6654..a86fcaaf82e67 100644 +--- a/python/protobuf.c ++++ b/python/protobuf.c +@@ -58,6 +58,12 @@ static struct PyModuleDef module_def = {PyModuleDef_HEAD_INIT, + // ----------------------------------------------------------------------------- + + PyUpb_ModuleState* PyUpb_ModuleState_MaybeGet(void) { ++#if PY_VERSION_HEX >= 0x030D0000 // >= 3.13 ++ /* Calling `PyState_FindModule` during interpreter shutdown causes a crash. */ ++ if (Py_IsFinalizing()) { ++ return NULL; ++ } ++#endif + PyObject* module = PyState_FindModule(&module_def); + return module ? PyModule_GetState(module) : NULL; + } diff --git a/dev-python/protobuf/protobuf-6.32.1-r1.ebuild b/dev-python/protobuf/protobuf-6.32.1-r1.ebuild new file mode 100644 index 000000000000..cdaf0acd014d --- /dev/null +++ b/dev-python/protobuf/protobuf-6.32.1-r1.ebuild @@ -0,0 +1,159 @@ +# Copyright 2008-2025 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 + +# Default implementation currently is upb, which doesn't match dev-libs/protobuf +# https://github.com/protocolbuffers/protobuf/blob/main/python/README.md#implementation-backends + +DISTUTILS_EXT=1 +DISTUTILS_USE_PEP517=setuptools +PYTHON_COMPAT=( python3_{11..14} ) + +inherit distutils-r1 pypi + +GH_PV=$(ver_cut 2-3) +GH_P=${PN}-${GH_PV} + +DESCRIPTION="Google's Protocol Buffers - Python bindings" +HOMEPAGE=" + https://protobuf.dev/ + https://pypi.org/project/protobuf/ +" +# Rename sdist to avoid conflicts with dev-libs/protobuf +SRC_URI=" + $(pypi_sdist_url) -> ${P}.py.tar.gz + test? ( + https://github.com/protocolbuffers/protobuf/archive/v${GH_PV}.tar.gz + -> ${GH_P}.gh.tar.gz + ) +" + +LICENSE="BSD" +SLOT="0/$(ver_cut 1-3)" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~mips ~ppc ~ppc64 ~riscv ~sparc ~x86" + +# need protobuf compiler +BDEPEND=" + test? ( + dev-libs/protobuf + dev-python/absl-py[${PYTHON_USEDEP}] + dev-python/numpy[${PYTHON_USEDEP}] + ) +" + +EPYTEST_PLUGINS=() +EPYTEST_XDIST=1 +distutils_enable_tests pytest + +src_unpack() { + unpack "${P}.py.tar.gz" + + if use test; then + mkdir "${WORKDIR}/test" || die + cd "${WORKDIR}/test" || die + unpack "${GH_P}.gh.tar.gz" + fi +} + +src_prepare() { + local PATCHES=( + # https://github.com/protocolbuffers/protobuf/commit/d57d2708b371bda5e7212b0eca63091fa2d7ab42 + # potentially fixes https://github.com/protocolbuffers/protobuf/issues/22067 + "${FILESDIR}/${P}-crash.patch" + ) + + distutils-r1_src_prepare + + # strip old-style namespace + rm google/__init__.py || die +} + +python_test() { + local EPYTEST_DESELECT=() + local EPYTEST_IGNORE=( + # TODO: figure out how to build the pybind11 test extension + google/protobuf/internal/recursive_message_pybind11_test.py + ) + + case ${EPYTHON} in + python3.11) + EPYTEST_IGNORE+=( + # syntax error... + google/protobuf/internal/json_format_test.py + ) + ;; + python3.14*) + EPYTEST_DESELECT+=( + # exception message mismatch + google/protobuf/internal/json_format_test.py::JsonFormatTest::testInvalidTimestamp + google/protobuf/internal/well_known_types_test.py::TimeUtilTest::testInvalidTimestamp + ) + ;; + esac + + cp -r "${BUILD_DIR}"/{install,test} || die + local -x PATH="${BUILD_DIR}/test${EPREFIX}/usr/bin:${PATH}" + cd "${BUILD_DIR}/test$(python_get_sitedir)" || die + + # copy test files from the source tree + cp -r "${WORKDIR}/test/${GH_P}/python/google/protobuf/internal/." \ + google/protobuf/internal/ || die + # link the test data for text_format_test.py + # (it traverses directories upwards until to finds src/google...) + ln -s "${WORKDIR}/test/${GH_P}/src" ../src || die + + # compile test-related protobufs + local test_protos=( + # from src + any_test.proto + map_proto2_unittest.proto + map_unittest.proto + unittest.proto + unittest_custom_options.proto + unittest_delimited.proto + unittest_delimited_import.proto + unittest_features.proto + unittest_import.proto + unittest_import_public.proto + unittest_legacy_features.proto + unittest_mset.proto + unittest_mset_wire_format.proto + unittest_no_field_presence.proto + unittest_no_generic_services.proto + unittest_proto3.proto + unittest_proto3_arena.proto + unittest_proto3_extensions.proto + unittest_retention.proto + util/json_format.proto + util/json_format_proto3.proto + # from python + internal/descriptor_pool_test1.proto + internal/descriptor_pool_test2.proto + internal/factory_test1.proto + internal/factory_test2.proto + internal/file_options_test.proto + internal/import_test_package/import_public.proto + internal/import_test_package/import_public_nested.proto + internal/import_test_package/inner.proto + internal/import_test_package/outer.proto + internal/message_set_extensions.proto + internal/missing_enum_values.proto + internal/more_extensions.proto + internal/more_messages.proto + internal/no_package.proto + internal/packed_field_test.proto + internal/self_recursive.proto + internal/test_bad_identifiers.proto + internal/test_proto2.proto + internal/test_proto3_optional.proto + internal/well_known_types_test.proto + ) + local proto + for proto in "${test_protos[@]}"; do + protoc --python_out=. -I"${WORKDIR}/test/${GH_P}/src" -I. \ + "google/protobuf/${proto}" || die + done + + epytest +} |
