diff options
Diffstat (limited to 'app-admin/salt')
34 files changed, 2041 insertions, 1975 deletions
diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest index c25bbbf6d61c..779c5a6e36ea 100644 --- a/app-admin/salt/Manifest +++ b/app-admin/salt/Manifest @@ -1,5 +1,4 @@ -DIST salt-3002.9.tar.gz 15817470 BLAKE2B 31fb6dbb61a9f0ab22ca761810a934792e9fa9c78628f925e63d3d54d00fa4ea0b4aa806ba3ea92f7397ba3291281bf8989d9a288fb3114c7911cdebfc9acd6a SHA512 f34fd05960a68cba51f34cf8b7c737bd84d00472cec80628f082d16e54cf70705e191ac4b6690bf406a8a11e26c8155e4bdbdec34ede5f0721fd9b5e637a0ed1 -DIST salt-3003.4.tar.gz 16031515 BLAKE2B 34902aba7ab64f4ddbacbad1b776b9b2218caf22fb843879a80bd5c30b6c28f4c22a050bbaf0e9735507a78c887f52bcae7d1833ffeb51a543ec22fda79252e6 SHA512 35419fbb3f9a0f3e87579f740b717d6902cab0d85397b16d1e94d9516bf5f5d269b4f8bca370fd376abd9b7c8a6ad7ef4c8e8a8fdd31655fd17c810989e79693 -DIST salt-3003.5.tar.gz 16056545 BLAKE2B ede3f0c63175f093dca07bee1bfb659cc608336ae92f532fc45868bd7eca659498c42e5d44324492744b802ade088adac869277679989550e217c1a135d6566d SHA512 ebda2056b4d6d216a0689b919d00aa78f615c355d21703d1939dbb6b00e9ad9347be4ee5b861282521f2d337bf7bf2fdc85e6942016358088a094d854fb33be9 -DIST salt-3004.1.tar.gz 17685649 BLAKE2B 64950cdc8420228f935d4a21fc20872da9ecf7c51b866ec3c59b46486b84a739b002acc44fa909eed93ce3dc6bedc9804df05d3d9ee5a9a13cd9d041ba70f876 SHA512 9353a8dc2a1c6e272318c6f35059236c5d78b6c8930f715275b701c12fca3be1fe930eb533f3f0c22933ba60967b0980300b922fe486cee9a62e6cdb568bdf91 -DIST salt-3004.2.tar.gz 17685127 BLAKE2B a42e31d8a006488b3a6f341f817cde21ff86248d2b548d9914c429c62d7570cdf46cf2b41311cbb08ced7f9518e68156c6df3eb78e55cacfd4d40a4e7a54f52b SHA512 b2fa434f1d25eabac51d65d75bb020943eb71aff113d683e6f436a0f205bd3c7682b1b7acd4d9a62bf37a47eb0561293d263f3174d5e266f0998a1652fcae2ef +DIST salt-3005.5.tar.gz 17940104 BLAKE2B c7a820bc946c2cd8124fb6f559608ab1dc3cd85d6f0e7d0a2a87b7bc0dda361178e83b307c2fecd8a47d59032f85dc9f4caeef5698e98c0e349d1c6979f9f68a SHA512 1332c9751a225dbf569601eb1932fe3ebea93c8d8be7485b1b8150d5200ad2e82954c970d59ba0e888860062d059db78a50bffe69fc367bdb7b2388b62e19f32 +DIST salt-3006.5.tar.gz 20536455 BLAKE2B cf475dc5e919f6ab180578db2aae5f3655623b39b134d67609da4f607be909340c6e55c940cfb66f129cc75d40b5cdda094e866db116d8a45aa5eef26d8fa1eb SHA512 8aaf5c5d36d8aa17b3fe867cee470f7b3c5dd1f6abaf5bdb49a3df76d3498d0dc1fa305a069bc95ad057489db229454b38b0ea9c1ade1e46b5d9b57aeef10c23 +DIST salt-3006.7.tar.gz 20562663 BLAKE2B b4ff9039509b1de7151060cb0e68252868d493e114e327a3c48bfc5584f67521a2106b41b77377f6d43ab5795399b6fe5860ce8e091459687c4a5b2378752729 SHA512 9d1759a7c0dfc9ad4fdc94460f0f3799483737207bfdc8ddd1424e5c6083ea74ef520f13c323d5cbd7f65c1d9bb13bbbeb5f2cafe6dcacbc2689e733794aef2d +DIST salt-3007.0.tar.gz 20304228 BLAKE2B 3db95ce779cfd08d61536dcfb4ff6ac31788ad1d6d4665b640dcc430f5a33847f231f94fd574c5d8df7b14e2854511c80610a37cd19be5429c4643be8bd9e0eb SHA512 0e49d76dafdb981ee380ea89ceba2cddeae8cd95df1d188a6f8ba64a175c606aaf2f8101bacb040792255afdb46ae668cbc9464d0dbb055986e85cee4d5c130b diff --git a/app-admin/salt/files/salt-2019.2.0-skip-tests-that-oom-machine.patch b/app-admin/salt/files/salt-2019.2.0-skip-tests-that-oom-machine.patch deleted file mode 100644 index d0172d739554..000000000000 --- a/app-admin/salt/files/salt-2019.2.0-skip-tests-that-oom-machine.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/tests/unit/modules/test_boto_apigateway.py b/tests/unit/modules/test_boto_apigateway.py -index be26b3f093..ca971556d5 100644 ---- a/tests/unit/modules/test_boto_apigateway.py -+++ b/tests/unit/modules/test_boto_apigateway.py -@@ -169,6 +169,7 @@ def _has_required_botocore(): - return True - - -+@skipIf(True, "Causes machines to OOM") - class BotoApiGatewayTestCaseBase(TestCase, LoaderModuleMockMixin): - conn = None - -@@ -207,6 +208,7 @@ class BotoApiGatewayTestCaseBase(TestCase, LoaderModuleMockMixin): - self.addCleanup(delattr, self, 'conn') - - -+@skipIf(True, "Causes machines to OOM") - class BotoApiGatewayTestCaseMixin(object): - def _diff_list_dicts(self, listdict1, listdict2, sortkey): - ''' diff --git a/app-admin/salt/files/salt-3002-dont-realpath-on-tmpdir.patch b/app-admin/salt/files/salt-3002-dont-realpath-on-tmpdir.patch deleted file mode 100644 index 5ef68dcd1803..000000000000 --- a/app-admin/salt/files/salt-3002-dont-realpath-on-tmpdir.patch +++ /dev/null @@ -1,38 +0,0 @@ -diff --git a/tests/integration/files/file/base/_modules/runtests_helpers.py b/tests/integration/files/file/base/_modules/runtests_helpers.py -index 3ee0e2da5f..5b462f0a9e 100644 ---- a/tests/integration/files/file/base/_modules/runtests_helpers.py -+++ b/tests/integration/files/file/base/_modules/runtests_helpers.py -@@ -18,7 +18,7 @@ try: - from tests.support.runtests import RUNTIME_VARS - except ImportError: - # Salt SSH Tests -- SYS_TMP_DIR = os.path.realpath( -+ SYS_TMP_DIR = os.path.abspath( - # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too long - # for unix sockets: ``error: AF_UNIX path too long`` - # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR} -diff --git a/tests/support/paths.py b/tests/support/paths.py -index 5f28904858..26245fadf9 100644 ---- a/tests/support/paths.py -+++ b/tests/support/paths.py -@@ -48,14 +48,12 @@ if TESTS_DIR not in sys.path: - sys.path.insert(1, TESTS_DIR) - - SYS_TMP_DIR = os.path.abspath( -- os.path.realpath( -- # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too long -- # for unix sockets: ``error: AF_UNIX path too long`` -- # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR} -- os.environ.get("TMPDIR", tempfile.gettempdir()) -- if not sys.platform.startswith("darwin") -- else "/tmp" -- ) -+ # Avoid ${TMPDIR} and gettempdir() on MacOS as they yield a base path too long -+ # for unix sockets: ``error: AF_UNIX path too long`` -+ # Gentoo Portage prefers ebuild tests are rooted in ${TMPDIR} -+ os.environ.get("TMPDIR", tempfile.gettempdir()) -+ if not sys.platform.startswith("darwin") -+ else "/tmp" - ) - TMP = os.path.join(SYS_TMP_DIR, "salt-tests-tmpdir") - TMP_ROOT_DIR = os.path.join(TMP, "rootdir") diff --git a/app-admin/salt/files/salt-3002.5-tests.patch b/app-admin/salt/files/salt-3002.5-tests.patch deleted file mode 100644 index 5a2eb43c3a42..000000000000 --- a/app-admin/salt/files/salt-3002.5-tests.patch +++ /dev/null @@ -1,30 +0,0 @@ ---- salt-3002.5/tests/unit/modules/test_cmdmod.py 2021-02-26 11:01:33.407219444 -0800 -+++ salt-3002.5-python3_7/tests/unit/modules/test_cmdmod.py 2021-02-26 11:01:47.709124416 -0800 -@@ -560,6 +560,7 @@ - - self.assertEqual(ret["stdout"], salt.utils.stringutils.to_unicode(stdout)) - -+ @skipIf(True, "doesn't work in sandbox") - def test_run_all_output_loglevel_debug(self): - """ - Test that specifying debug for loglevel ---- salt-3002.5//tests/unit/utils/test_thin.py 2021-02-26 13:30:47.841179546 -0800 -+++ salt-3002.5-python3_7//tests/unit/utils/test_thin.py 2021-02-26 13:41:33.681174531 -0800 -@@ -1275,6 +1275,7 @@ - @skipIf( - salt.utils.platform.is_windows(), "salt-ssh does not deploy to/from windows" - ) -+ @skipIf(True, "does not work with network-sandbox") - def test_thin_dir(self): - """ - Test the thin dir to make sure salt-call can run ---- salt-3002.5/tests/unit/modules/test_cmdmod.py 2021-02-26 13:30:48.014178373 -0800 -+++ salt-3002.5-python3_7/tests/unit/modules/test_cmdmod.py 2021-02-26 13:43:22.395441008 -0800 -@@ -439,6 +439,7 @@ - - @skipIf(salt.utils.platform.is_windows(), "Do not run on Windows") - @skipIf(salt.utils.platform.is_darwin(), "Do not run on MacOS") -+ @skipIf(True, "does not work with network-sandbox") - def test_run_cwd_in_combination_with_runas(self): - """ - cmd.run executes command in the cwd directory diff --git a/app-admin/salt/files/salt-3002.7-tests.patch b/app-admin/salt/files/salt-3002.7-tests.patch deleted file mode 100644 index 828b7eee76eb..000000000000 --- a/app-admin/salt/files/salt-3002.7-tests.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/tests/unit/modules/test_boto_route53.py b/tests/unit/modules/test_boto_route53.py -index e745f8f8c6..a2bb2a7ef2 100644 ---- a/tests/unit/modules/test_boto_route53.py -+++ b/tests/unit/modules/test_boto_route53.py -@@ -80,6 +80,7 @@ def _has_required_moto(): - return True - - -+@skipIf(True, "skipping broken test") - @skipIf(HAS_MOTO is False, "The moto module must be installed.") - @skipIf( - _has_required_moto() is False, diff --git a/app-admin/salt/files/salt-3002.8-relax-pyzmq-dep.patch b/app-admin/salt/files/salt-3002.8-relax-pyzmq-dep.patch deleted file mode 100644 index e42a22b4e8b7..000000000000 --- a/app-admin/salt/files/salt-3002.8-relax-pyzmq-dep.patch +++ /dev/null @@ -1,11 +0,0 @@ -diff --git a/requirements/zeromq.txt b/requirements/zeromq.txt -index 77c9bd8be1..ffa1589043 100644 ---- a/requirements/zeromq.txt -+++ b/requirements/zeromq.txt -@@ -1,5 +1,4 @@ - -r base.txt - -r crypto.txt - --pyzmq>=17.0.0 ; python_version < "3.9" --pyzmq>=19.0.2 ; python_version >= "3.9" -+pyzmq diff --git a/app-admin/salt/files/salt-3002.8-tests.patch b/app-admin/salt/files/salt-3002.8-tests.patch deleted file mode 100644 index c94a0c106347..000000000000 --- a/app-admin/salt/files/salt-3002.8-tests.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/salt/transport/mixins/auth.py b/salt/transport/mixins/auth.py -index de86773750..3ca09260a0 100644 ---- a/salt/transport/mixins/auth.py -+++ b/salt/transport/mixins/auth.py -@@ -54,7 +54,7 @@ class AESPubClientMixin: - @salt.ext.tornado.gen.coroutine - def _decode_payload(self, payload): - # we need to decrypt it -- log.trace("Decoding payload: %s", payload) -+ log.debug("Decoding payload: %s", payload) - if payload["enc"] == "aes": - self._verify_master_signature(payload) - try: -diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py -index 97bce1f10b..2ff5904b87 100644 ---- a/tests/unit/utils/test_schema.py -+++ b/tests/unit/utils/test_schema.py -@@ -835,6 +835,7 @@ class ConfigTestCase(TestCase): - ) - - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") -+ @skipIf(True, "Broken with newer versions of jsonschema") - def test_hostname_config_validation(self): - class TestConf(schema.Schema): - item = schema.HostnameItem(title="Item", description="Item description") -@@ -2060,6 +2061,7 @@ class ConfigTestCase(TestCase): - item = schema.NotItem(item=schema.BooleanItem()) - self.assertEqual(item.serialize(), {"not": item.item.serialize()}) - -+ @skipIf(True, "Broken with newer versions of jsonschema") - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") - def test_not_config_validation(self): - class TestConf(schema.Schema): diff --git a/app-admin/salt/files/salt-3003-skip-tests-that-oom-machine.patch b/app-admin/salt/files/salt-3003-skip-tests-that-oom-machine.patch deleted file mode 100644 index 804b6a8704f0..000000000000 --- a/app-admin/salt/files/salt-3003-skip-tests-that-oom-machine.patch +++ /dev/null @@ -1,20 +0,0 @@ -diff --git a/tests/unit/modules/test_boto_apigateway.py b/tests/unit/modules/test_boto_apigateway.py -index 6ee6aeb002..db9aeaee95 100644 ---- a/tests/unit/modules/test_boto_apigateway.py -+++ b/tests/unit/modules/test_boto_apigateway.py -@@ -154,6 +154,7 @@ def _has_required_botocore(): - return True - - -+@skipIf(True, "Causes machines to OOM") - class BotoApiGatewayTestCaseBase(TestCase, LoaderModuleMockMixin): - conn = None - -@@ -190,6 +191,7 @@ class BotoApiGatewayTestCaseBase(TestCase, LoaderModuleMockMixin): - self.addCleanup(delattr, self, "utils") - - -+@skipIf(True, "Causes machines to OOM") - class BotoApiGatewayTestCaseMixin: - def _diff_list_dicts(self, listdict1, listdict2, sortkey): - """ diff --git a/app-admin/salt/files/salt-3003.3-tests.patch b/app-admin/salt/files/salt-3003.3-tests.patch deleted file mode 100644 index 049d8c164c55..000000000000 --- a/app-admin/salt/files/salt-3003.3-tests.patch +++ /dev/null @@ -1,233 +0,0 @@ -diff --git a/salt/transport/ipc.py b/salt/transport/ipc.py -index 29210d7522..4fd648116f 100644 ---- a/salt/transport/ipc.py -+++ b/salt/transport/ipc.py -@@ -2,7 +2,6 @@ - IPC transport classes - """ - -- - import errno - import logging - import socket -@@ -20,6 +19,7 @@ from salt.ext.tornado.ioloop import IOLoop - from salt.ext.tornado.ioloop import TimeoutError as TornadoTimeoutError - from salt.ext.tornado.iostream import IOStream, StreamClosedError - from salt.ext.tornado.locks import Lock -+import tornado.iostream - - log = logging.getLogger(__name__) - -@@ -693,11 +693,11 @@ class IPCMessageSubscriber(IPCClient): - if not first_sync_msg: - # We read at least one piece of data and we're on sync run - break -- except TornadoTimeoutError: -+ except TornadoTimeoutError if isinstance(TornadoTimeoutError, BaseException) else (salt.ext.tornado.ioloop.TimeoutError): - # In the timeout case, just return None. - # Keep 'self._read_stream_future' alive. - ret = None -- except StreamClosedError as exc: -+ except StreamClosedError if isinstance(StreamClosedError, BaseException) else (tornado.iostream.StreamClosedError) as exc: - log.trace("Subscriber disconnected from IPC %s", self.socket_path) - self._read_stream_future = None - except Exception as exc: # pylint: disable=broad-except -diff --git a/tests/integration/grains/test_core.py b/tests/integration/grains/test_core.py -index 5f1cf11e24..8affb398ff 100644 ---- a/tests/integration/grains/test_core.py -+++ b/tests/integration/grains/test_core.py -@@ -21,6 +21,7 @@ def _freebsd_or_openbsd(): - return salt.utils.platform.is_freebsd() or salt.utils.platform.is_openbsd() - - -+@pytest.mark.skip("Tests only should run on FreeBSD and OpenBSD") - @pytest.mark.windows_whitelisted - class TestGrainsCore(ModuleCase): - """ -diff --git a/tests/integration/states/test_x509.py b/tests/integration/states/test_x509.py -index 2321689ef5..574de51e56 100644 ---- a/tests/integration/states/test_x509.py -+++ b/tests/integration/states/test_x509.py -@@ -468,7 +468,7 @@ c9bcgp7D7xD+TxWWNj4CSXEccJgGr91StV+gFg4ARQ== - first_run[key]["changes"]["Certificate"]["New"]["Not After"], - "%Y-%m-%d %H:%M:%S", - ) -- self.assertEqual(29, (expiry - datetime.datetime.now()).days) -+ self.assertEqual(30, (expiry - datetime.datetime.now()).days) - self.assertTrue(os.path.exists(crtfile), "Certificate was not created.") - - with salt.utils.files.fopen(crtfile, "r") as first_cert: -@@ -485,14 +485,14 @@ c9bcgp7D7xD+TxWWNj4CSXEccJgGr91StV+gFg4ARQ== - }, - ) - self.assertEqual( -- "Certificate needs renewal: 29 days remaining but it needs to be at least 90", -+ "Certificate needs renewal: 30 days remaining but it needs to be at least 90", - second_run[key]["changes"]["Status"]["Old"], - ) - expiry = datetime.datetime.strptime( - second_run[key]["changes"]["Certificate"]["New"]["Not After"], - "%Y-%m-%d %H:%M:%S", - ) -- self.assertEqual(179, (expiry - datetime.datetime.now()).days) -+ self.assertEqual(180, (expiry - datetime.datetime.now()).days) - with salt.utils.files.fopen(crtfile, "r") as second_cert: - self.assertNotEqual( - cert_contents, -diff --git a/tests/pytests/functional/modules/state/requisites/test_listen.py b/tests/pytests/functional/modules/state/requisites/test_listen.py -index b7a90d0ca0..26030f403b 100644 ---- a/tests/pytests/functional/modules/state/requisites/test_listen.py -+++ b/tests/pytests/functional/modules/state/requisites/test_listen.py -@@ -292,43 +292,3 @@ def test_listen_requisite_resolution_names(state, state_tree): - assert "test_|-listener_service_|-nginx_|-mod_watch" in ret - assert "test_|-listener_service_|-crond_|-mod_watch" in ret - -- --def test_onlyif_req(state, subtests): -- onlyif = [{}] -- state_id = "test_|-onlyif test_|-onlyif test_|-succeed_with_changes" -- with subtests.test(onlyif=onlyif): -- ret = state.single( -- name="onlyif test", fun="test.succeed_with_changes", onlyif=onlyif -- ) -- assert ret[state_id]["result"] is True -- assert ret[state_id]["comment"] == "Success!" -- -- onlyif = [{"fun": "test.true"}] -- state_id = "test_|-onlyif test_|-onlyif test_|-succeed_without_changes" -- with subtests.test(onlyif=onlyif): -- ret = state.single( -- name="onlyif test", fun="test.succeed_without_changes", onlyif=onlyif -- ) -- assert ret[state_id]["result"] is True -- assert not ret[state_id]["changes"] -- assert ret[state_id]["comment"] == "Success!" -- -- onlyif = [{"fun": "test.false"}] -- state_id = "test_|-onlyif test_|-onlyif test_|-fail_with_changes" -- with subtests.test(onlyif=onlyif): -- ret = state.single( -- name="onlyif test", fun="test.fail_with_changes", onlyif=onlyif -- ) -- assert ret[state_id]["result"] is True -- assert not ret[state_id]["changes"] -- assert ret[state_id]["comment"] == "onlyif condition is false" -- -- onlyif = [{"fun": "test.true"}] -- state_id = "test_|-onlyif test_|-onlyif test_|-fail_with_changes" -- with subtests.test(onlyif=onlyif): -- ret = state.single( -- name="onlyif test", fun="test.fail_with_changes", onlyif=onlyif -- ) -- assert ret[state_id]["result"] is False -- assert ret[state_id]["changes"] -- assert ret[state_id]["comment"] == "Failure!" -diff --git a/tests/pytests/unit/modules/test_cmdmod.py b/tests/pytests/unit/modules/test_cmdmod.py -index 5424514160..0564b59593 100644 ---- a/tests/pytests/unit/modules/test_cmdmod.py -+++ b/tests/pytests/unit/modules/test_cmdmod.py -@@ -438,6 +438,7 @@ def test_run_cwd_doesnt_exist_issue_7154(): - - @pytest.mark.skip_on_darwin - @pytest.mark.skip_on_windows -+@pytest.mark.skip("does not work in sandbox environment") - def test_run_cwd_in_combination_with_runas(): - """ - cmd.run executes command in the cwd directory -diff --git a/tests/unit/ext/test_ipaddress.py b/tests/unit/ext/test_ipaddress.py -index 3b91757a03..5fa0f88e78 100644 ---- a/tests/unit/ext/test_ipaddress.py -+++ b/tests/unit/ext/test_ipaddress.py -@@ -2707,6 +2707,7 @@ class IpaddrUnitTest(TestCase): - "2001:658:22a:cafe:200::1/::ffff:ffff:ffff:ffff", - ) - -+ @pytest.mark.skip("_cache no longer present in python3.8+") - def testNetworkElementCaching(self): - # V4 - make sure we're empty - self.assertNotIn("broadcast_address", self.ipv4_network._cache) -diff --git a/tests/unit/modules/test_boto_route53.py b/tests/unit/modules/test_boto_route53.py -index e745f8f8c6..ab36a90a79 100644 ---- a/tests/unit/modules/test_boto_route53.py -+++ b/tests/unit/modules/test_boto_route53.py -@@ -80,6 +80,7 @@ def _has_required_moto(): - return True - - -+@skipIf(True, "test case appears to be broken") - @skipIf(HAS_MOTO is False, "The moto module must be installed.") - @skipIf( - _has_required_moto() is False, -diff --git a/tests/unit/utils/test_parsers.py b/tests/unit/utils/test_parsers.py -index 907c67f477..2429d27641 100644 ---- a/tests/unit/utils/test_parsers.py -+++ b/tests/unit/utils/test_parsers.py -@@ -5,6 +5,7 @@ - import os - import shutil - import tempfile -+import pytest - - import salt.config - import salt.log.setup as log -@@ -983,6 +984,7 @@ class SaltRunOptionParserTestCase(ParserBase, TestCase): - if os.path.exists(self.log_file): - os.unlink(self.log_file) - -+ @pytest.mark.skip("Tries to write to /var") - def test_jid_option(self): - jid = salt.utils.jid.gen_jid({}) - args = ["--jid", jid] -@@ -991,6 +993,7 @@ class SaltRunOptionParserTestCase(ParserBase, TestCase): - parser.parse_args(args) - assert parser.options.jid == jid - -+ @pytest.mark.skip("Tries to write to /var") - def test_jid_option_invalid(self): - jid = salt.utils.jid.gen_jid({}) + "A" - args = ["--jid", jid] -@@ -1041,6 +1044,7 @@ class SaltSSHOptionParserTestCase(ParserBase, TestCase): - if os.path.exists(self.ssh_log_file): - os.unlink(self.ssh_log_file) - -+ @pytest.mark.skip("Tries to write to /var") - def test_jid_option(self): - jid = salt.utils.jid.gen_jid({}) - args = ["--jid", jid] + self.args -@@ -1049,6 +1053,7 @@ class SaltSSHOptionParserTestCase(ParserBase, TestCase): - parser.parse_args(args) - assert parser.options.jid == jid - -+ @pytest.mark.skip("Tries to write to /var") - def test_jid_option_invalid(self): - jid = salt.utils.jid.gen_jid({}) + "A" - args = ["--jid", jid] + self.args -diff --git a/tests/unit/utils/test_vt.py b/tests/unit/utils/test_vt.py -index bf7a323e26..3c8ce3a128 100644 ---- a/tests/unit/utils/test_vt.py -+++ b/tests/unit/utils/test_vt.py -@@ -17,6 +17,8 @@ import subprocess - import sys - import time - -+import pytest -+ - import salt.utils - import salt.utils.files - import salt.utils.platform -@@ -275,6 +277,7 @@ class VTTestCase(TestCase): - salt.utils.platform.is_windows(), "Skip VT tests on windows, due to issue 54290" - ) - @fixStdOutErrFileNoIfNeeded -+ @pytest.mark.skip("Does not work in sandbox environment") - def test_split_multibyte_characters_unicode(self): - """ - Tests that the vt correctly handles multibyte characters that are -@@ -342,6 +345,7 @@ class VTTestCase(TestCase): - salt.utils.platform.is_windows(), "Skip VT tests on windows, due to issue 54290" - ) - @fixStdOutErrFileNoIfNeeded -+ @pytest.mark.skip("Does not work in sandbox environment") - def test_split_multibyte_characters_shiftjis(self): - """ - Tests that the vt correctly handles multibyte characters that are diff --git a/app-admin/salt/files/salt-3003.4-relax-pyzmq-dep.patch b/app-admin/salt/files/salt-3003.4-relax-pyzmq-dep.patch deleted file mode 100644 index 7585af58ab11..000000000000 --- a/app-admin/salt/files/salt-3003.4-relax-pyzmq-dep.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/requirements/zeromq.txt b/requirements/zeromq.txt -index 35d9014713..ffa1589043 100644 ---- a/requirements/zeromq.txt -+++ b/requirements/zeromq.txt -@@ -1,6 +1,4 @@ - -r base.txt - -r crypto.txt - --pyzmq<=20.0.0 ; python_version < "3.6" --pyzmq>=17.0.0 ; python_version < "3.9" --pyzmq>=19.0.2 ; python_version >= "3.9" -+pyzmq diff --git a/app-admin/salt/files/salt-3003.4-tests.patch b/app-admin/salt/files/salt-3003.4-tests.patch deleted file mode 100644 index 93fd4214021b..000000000000 --- a/app-admin/salt/files/salt-3003.4-tests.patch +++ /dev/null @@ -1,52 +0,0 @@ -diff --git a/tests/conftest.py b/tests/conftest.py -index 0fc1844bc8..32346da1f6 100644 ---- a/tests/conftest.py -+++ b/tests/conftest.py -@@ -34,7 +34,6 @@ import salt.utils.files - import salt.utils.path - import salt.utils.platform - import salt.utils.win_functions --import saltfactories.utils.compat - from salt.serializers import yaml - from salt.utils.immutabletypes import freeze - from tests.support.helpers import ( -@@ -465,9 +464,7 @@ def pytest_runtest_setup(item): - item._skipped_by_mark = True - pytest.skip(PRE_PYTEST_SKIP_REASON) - -- if saltfactories.utils.compat.has_unittest_attr( -- item, "__slow_test__" -- ) or item.get_closest_marker("slow_test"): -+ if item.get_closest_marker("slow_test"): - if item.config.getoption("--run-slow") is False: - item._skipped_by_mark = True - pytest.skip("Slow tests are disabled!") -diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py -index ef7acdb7a3..22953556cb 100644 ---- a/tests/unit/utils/test_schema.py -+++ b/tests/unit/utils/test_schema.py -@@ -1,6 +1,8 @@ - # pylint: disable=function-redefined - import copy - -+import pytest -+ - import salt.utils.json - import salt.utils.schema as schema - import salt.utils.stringutils -@@ -822,6 +824,7 @@ class ConfigTestCase(TestCase): - }, - ) - -+ @pytest.mark.skip("broken with newer versions of jsonschema") - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") - def test_hostname_config_validation(self): - class TestConf(schema.Schema): -@@ -2048,6 +2051,7 @@ class ConfigTestCase(TestCase): - item = schema.NotItem(item=schema.BooleanItem()) - self.assertEqual(item.serialize(), {"not": item.item.serialize()}) - -+ @pytest.mark.skip("broken with newer versions of jsonschema") - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") - def test_not_config_validation(self): - class TestConf(schema.Schema): diff --git a/app-admin/salt/files/salt-3004.1-jinja-3.patch b/app-admin/salt/files/salt-3004.1-jinja-3.patch deleted file mode 100644 index 98f21bc35129..000000000000 --- a/app-admin/salt/files/salt-3004.1-jinja-3.patch +++ /dev/null @@ -1,40 +0,0 @@ -diff --git a/salt/utils/jinja.py b/salt/utils/jinja.py -index 0cb70bf64a..322c2f7f46 100644 ---- a/salt/utils/jinja.py -+++ b/salt/utils/jinja.py -@@ -25,10 +25,11 @@ import salt.utils.json - import salt.utils.stringutils - import salt.utils.url - import salt.utils.yaml --from jinja2 import BaseLoader, Markup, TemplateNotFound, nodes -+from jinja2 import BaseLoader, TemplateNotFound, nodes - from jinja2.environment import TemplateModule - from jinja2.exceptions import TemplateRuntimeError - from jinja2.ext import Extension -+from markupsafe import Markup - from salt.exceptions import TemplateError - from salt.utils.decorators.jinja import jinja_filter, jinja_global, jinja_test - from salt.utils.odict import OrderedDict -@@ -706,7 +707,7 @@ def method_call(obj, f_name, *f_args, **f_kwargs): - return getattr(obj, f_name, lambda *args, **kwargs: None)(*f_args, **f_kwargs) - - --@jinja2.contextfunction -+@jinja2.pass_context - def show_full_context(ctx): - return salt.utils.data.simple_types_filter( - {key: value for key, value in ctx.items()} -diff --git a/tests/unit/utils/test_jinja.py b/tests/unit/utils/test_jinja.py -index 6502831aff..dec847364a 100644 ---- a/tests/unit/utils/test_jinja.py -+++ b/tests/unit/utils/test_jinja.py -@@ -22,7 +22,8 @@ import salt.utils.files - import salt.utils.json - import salt.utils.stringutils - import salt.utils.yaml --from jinja2 import DictLoader, Environment, Markup, exceptions -+from jinja2 import DictLoader, Environment, exceptions -+from markupsafe import Markup - from salt.exceptions import SaltRenderError - from salt.utils.decorators.jinja import JinjaFilter - from salt.utils.jinja import ( diff --git a/app-admin/salt/files/salt-3004.1-py310.patch b/app-admin/salt/files/salt-3004.1-py310.patch deleted file mode 100644 index 7e30d7687a66..000000000000 --- a/app-admin/salt/files/salt-3004.1-py310.patch +++ /dev/null @@ -1,53 +0,0 @@ -From a58bbbe058df8f45872c43a95992f6a7a7914ab9 Mon Sep 17 00:00:00 2001 -From: piterpunk <piterpunk@slackware.com> -Date: Fri, 15 Oct 2021 11:03:20 -0300 -Subject: [PATCH] Fix _compat.py importlib logic for Python 3.10 - -Use the same logic in _compat.py and entrypoints.py to load -the same importlib.metadata. Python's built in implementation for -Python >= 3.10 and the Salt one for others. ---- - salt/_compat.py | 30 +++++++++++++++++------------- - 1 file changed, 17 insertions(+), 13 deletions(-) - -diff --git a/salt/_compat.py b/salt/_compat.py -index 8149657bea61..a402f17a3c71 100644 ---- a/salt/_compat.py -+++ b/salt/_compat.py -@@ -11,19 +11,23 @@ - else: - import salt.ext.ipaddress as ipaddress - -+if sys.version_info >= (3, 10): -+ # Python 3.10 will include a fix in importlib.metadata which allows us to -+ # get the distribution of a loaded entry-point -+ import importlib.metadata # pylint: disable=no-member,no-name-in-module -+else: -+ # importlib_metadata before version 3.3.0 does not include the functionality we need. -+ try: -+ import importlib_metadata - --# importlib_metadata before version 3.3.0 does not include the functionality we need. --try: -- import importlib_metadata -- -- importlib_metadata_version = [ -- int(part) -- for part in importlib_metadata.version("importlib_metadata").split(".") -- if part.isdigit() -- ] -- if tuple(importlib_metadata_version) < (3, 3, 0): -+ importlib_metadata_version = [ -+ int(part) -+ for part in importlib_metadata.version("importlib_metadata").split(".") -+ if part.isdigit() -+ ] -+ if tuple(importlib_metadata_version) < (3, 3, 0): -+ # Use the vendored importlib_metadata -+ import salt.ext.importlib_metadata as importlib_metadata -+ except ImportError: - # Use the vendored importlib_metadata - import salt.ext.importlib_metadata as importlib_metadata --except ImportError: -- # Use the vendored importlib_metadata -- import salt.ext.importlib_metadata as importlib_metadata diff --git a/app-admin/salt/files/salt-3004.1-relax-pyzmq-dep.patch b/app-admin/salt/files/salt-3004.1-relax-pyzmq-dep.patch deleted file mode 100644 index 99d432158215..000000000000 --- a/app-admin/salt/files/salt-3004.1-relax-pyzmq-dep.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/requirements/zeromq.txt b/requirements/zeromq.txt -index 62cb775d87..ffa1589043 100644 ---- a/requirements/zeromq.txt -+++ b/requirements/zeromq.txt -@@ -1,6 +1,4 @@ - -r base.txt - -r crypto.txt - --pyzmq<=20.0.0 ; python_version < "3.6" --pyzmq>=17.0.0,<22.0.0 ; python_version < "3.9" --pyzmq>19.0.2,<22.0.0 ; python_version >= "3.9" -+pyzmq diff --git a/app-admin/salt/files/salt-3004.1-tests.patch b/app-admin/salt/files/salt-3004.1-tests.patch deleted file mode 100644 index 956cf1b0041c..000000000000 --- a/app-admin/salt/files/salt-3004.1-tests.patch +++ /dev/null @@ -1,311 +0,0 @@ -diff --git a/tests/pytests/functional/fileserver/test_roots.py b/tests/pytests/functional/fileserver/test_roots.py -index c65efc8d52..9060fb61e2 100644 ---- a/tests/pytests/functional/fileserver/test_roots.py -+++ b/tests/pytests/functional/fileserver/test_roots.py -@@ -15,6 +15,7 @@ def configure_loader_modules(base_env_state_tree_root_dir): - return {roots: {"__opts__": opts}} - - -+@pytest.mark.skip("needs network access") - # nox -e pytest-zeromq-3.8(coverage=False) -- -vvv --run-slow --run-destructive tests\pytests\functional\fileserver\test_roots.py - def test_symlink_list(base_env_state_tree_root_dir): - with pytest.helpers.temp_file( -diff --git a/tests/pytests/functional/pillar/test_gpg.py b/tests/pytests/functional/pillar/test_gpg.py -index aaa4733f1d..b55cc9b4cf 100644 ---- a/tests/pytests/functional/pillar/test_gpg.py -+++ b/tests/pytests/functional/pillar/test_gpg.py -@@ -203,7 +203,7 @@ def gpg_homedir(salt_master, pillar_state_tree): - universal_newlines=True, - ) - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -@@ -220,7 +220,7 @@ def gpg_homedir(salt_master, pillar_state_tree): - input=TEST_KEY, - ) - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -@@ -250,7 +250,7 @@ def gpg_homedir(salt_master, pillar_state_tree): - input="KILLAGENT", - ) - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -diff --git a/tests/pytests/integration/cli/test_salt_proxy.py b/tests/pytests/integration/cli/test_salt_proxy.py -index c32c7e11e2..a9ee9fbd8d 100644 ---- a/tests/pytests/integration/cli/test_salt_proxy.py -+++ b/tests/pytests/integration/cli/test_salt_proxy.py -@@ -40,6 +40,7 @@ def test_exit_status_no_proxyid(salt_master, proxy_minion_id): - assert "error: salt-proxy requires --proxyid" in exc.value.stderr, exc.value - - -+@pytest.mark.skip("Currently broken") - @pytest.mark.skip_on_windows(reason="Windows does not do user checks") - def test_exit_status_unknown_user(salt_master, proxy_minion_id): - """ -@@ -66,7 +67,7 @@ def test_exit_status_unknown_argument(salt_master, proxy_minion_id): - factory = salt_master.salt_proxy_minion_daemon(proxy_minion_id) - factory.start("--unknown-argument", start_timeout=10, max_start_attempts=1) - -- assert exc.value.exitcode == salt.defaults.exitcodes.EX_USAGE, exc.value -+ assert exc.value.returncode == salt.defaults.exitcodes.EX_USAGE, exc.value - assert "Usage" in exc.value.stderr, exc.value - assert "no such option: --unknown-argument" in exc.value.stderr, exc.value - -@@ -89,8 +90,8 @@ def test_exit_status_correct_usage(salt_master, proxy_minion_id, salt_cli): - assert factory.is_running() - # Let's issue a ping before terminating - ret = salt_cli.run("test.ping", minion_tgt=proxy_minion_id) -- assert ret.exitcode == 0 -+ assert ret.returncode == 0 - assert ret.json is True - # Terminate the proxy minion - ret = factory.terminate() -- assert ret.exitcode == salt.defaults.exitcodes.EX_OK, ret -+ assert ret.returncode == salt.defaults.exitcodes.EX_OK, ret -diff --git a/tests/pytests/integration/sdb/test_vault.py b/tests/pytests/integration/sdb/test_vault.py -index 7dc4c55417..6c48296a0c 100644 ---- a/tests/pytests/integration/sdb/test_vault.py -+++ b/tests/pytests/integration/sdb/test_vault.py -@@ -107,7 +107,7 @@ def vault_container_version(request, salt_call_cli, vault_port): - if proc.returncode == 0: - break - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -@@ -133,7 +133,7 @@ def vault_container_version(request, salt_call_cli, vault_port): - ) - if proc.returncode != 0: - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -@@ -150,7 +150,7 @@ def vault_container_version(request, salt_call_cli, vault_port): - universal_newlines=True, - ) - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -diff --git a/tests/pytests/unit/modules/test_cmdmod.py b/tests/pytests/unit/modules/test_cmdmod.py -index bc1d2818aa..3bd93862b7 100644 ---- a/tests/pytests/unit/modules/test_cmdmod.py -+++ b/tests/pytests/unit/modules/test_cmdmod.py -@@ -440,6 +440,7 @@ def test_run_cwd_doesnt_exist_issue_7154(): - cmdmod.run_all(cmd, cwd=cwd) - - -+@pytest.mark.skip("needs root access") - @pytest.mark.skip_on_darwin - @pytest.mark.skip_on_windows - def test_run_cwd_in_combination_with_runas(): -diff --git a/tests/pytests/unit/modules/test_portage_config.py b/tests/pytests/unit/modules/test_portage_config.py -index 5cc6b90596..db37d2c4f1 100644 ---- a/tests/pytests/unit/modules/test_portage_config.py -+++ b/tests/pytests/unit/modules/test_portage_config.py -@@ -29,6 +29,7 @@ def test_get_config_file_wildcards(): - assert portage_config._get_config_file("mask", atom) == expected - - -+@pytest.mark.skip("test needs root access") - def test_enforce_nice_config(tmp_path): - atoms = [ - ("*/*::repo", "repo"), -diff --git a/tests/pytests/unit/state/test_state_compiler.py b/tests/pytests/unit/state/test_state_compiler.py -index fc43cf154d..7aa511c9f7 100644 ---- a/tests/pytests/unit/state/test_state_compiler.py -+++ b/tests/pytests/unit/state/test_state_compiler.py -@@ -679,6 +679,7 @@ def test_verify_retry_parsing(): - assert set(expected_result).issubset(set(state_obj.call(low_data))) - - -+@pytest.mark.skip("test requires root access") - def test_render_requisite_require_disabled(): - """ - Test that the state compiler correctly deliver a rendering -@@ -719,6 +720,7 @@ def test_render_requisite_require_disabled(): - assert run_num == 0 - - -+@pytest.mark.skip("test requires root access") - def test_render_requisite_require_in_disabled(): - """ - Test that the state compiler correctly deliver a rendering -diff --git a/tests/pytests/unit/state/test_state_format_slots.py b/tests/pytests/unit/state/test_state_format_slots.py -index 57b7bb2b87..7d2abce8d0 100644 ---- a/tests/pytests/unit/state/test_state_format_slots.py -+++ b/tests/pytests/unit/state/test_state_format_slots.py -@@ -218,6 +218,7 @@ def test_slot_append(state_obj): - assert cdata == {"args": ["arg"], "kwargs": {"key": "value1thing~"}} - - -+@pytest.mark.skip("test needs root") - # Skip on windows like integration.modules.test_state.StateModuleTest.test_parallel_state_with_long_tag - @skipIf( - salt.utils.platform.is_windows(), -diff --git a/tests/pytests/unit/test_minion.py b/tests/pytests/unit/test_minion.py -index 985ec99276..eb8a476e30 100644 ---- a/tests/pytests/unit/test_minion.py -+++ b/tests/pytests/unit/test_minion.py -@@ -493,6 +493,7 @@ def test_scheduler_before_connect(): - minion.destroy() - - -+@pytest.mark.skip("test needs root access") - def test_minion_module_refresh(): - """ - Tests that the 'module_refresh' just return in case there is no 'schedule' -@@ -520,6 +521,7 @@ def test_minion_module_refresh(): - minion.destroy() - - -+@pytest.mark.skip("test needs root access") - def test_minion_module_refresh_beacons_refresh(): - """ - Tests that 'module_refresh' calls beacons_refresh and that the -diff --git a/tests/pytests/unit/test_version.py b/tests/pytests/unit/test_version.py -index bc6bbfeadd..2653b558b0 100644 ---- a/tests/pytests/unit/test_version.py -+++ b/tests/pytests/unit/test_version.py -@@ -140,6 +140,7 @@ def test_sha(commit, match): - assert ret is None - - -+@pytest.mark.skip("test is broken if some optional deps aren't installed") - def test_version_report_lines(): - """ - Validate padding in versions report is correct -diff --git a/tests/support/helpers.py b/tests/support/helpers.py -index d82b14cb90..751018162c 100644 ---- a/tests/support/helpers.py -+++ b/tests/support/helpers.py -@@ -40,7 +40,7 @@ import salt.utils.platform - import salt.utils.pycrypto - import salt.utils.stringutils - import salt.utils.versions --from saltfactories.exceptions import FactoryFailure as ProcessFailed -+from pytestshellutils.exceptions import FactoryFailure as ProcessFailed - from saltfactories.utils.ports import get_unused_localhost_port - from saltfactories.utils.processes import ProcessResult - from tests.support.mock import patch -@@ -1720,7 +1720,7 @@ class VirtualEnv: - kwargs.setdefault("env", self.environ) - proc = subprocess.run(args, check=False, **kwargs) - ret = ProcessResult( -- exitcode=proc.returncode, -+ returncode=proc.returncode, - stdout=proc.stdout, - stderr=proc.stderr, - cmdline=proc.args, -@@ -1735,7 +1735,7 @@ class VirtualEnv: - cmdline=proc.args, - stdout=proc.stdout, - stderr=proc.stderr, -- exitcode=proc.returncode, -+ returncode=proc.returncode, - ) - return ret - -diff --git a/tests/unit/modules/test_boto_route53.py b/tests/unit/modules/test_boto_route53.py -index 1d3d1393a9..df331761e2 100644 ---- a/tests/unit/modules/test_boto_route53.py -+++ b/tests/unit/modules/test_boto_route53.py -@@ -4,6 +4,8 @@ from collections import namedtuple - - import pkg_resources # pylint: disable=3rd-party-module-not-gated - -+import pytest -+ - import salt.config - import salt.loader - import salt.utils.versions -@@ -99,6 +101,7 @@ class BotoRoute53TestCase(TestCase, LoaderModuleMockMixin): - def tearDown(self): - del self.opts - -+ @pytest.mark.skip("test currently broken") - @mock_route53_deprecated - def test_create_healthcheck(self): - """ -diff --git a/tests/unit/utils/test_parsers.py b/tests/unit/utils/test_parsers.py -index 907c67f477..3f68cfe8f3 100644 ---- a/tests/unit/utils/test_parsers.py -+++ b/tests/unit/utils/test_parsers.py -@@ -6,6 +6,8 @@ import os - import shutil - import tempfile - -+import pytest -+ - import salt.config - import salt.log.setup as log - import salt.syspaths -@@ -983,6 +985,7 @@ class SaltRunOptionParserTestCase(ParserBase, TestCase): - if os.path.exists(self.log_file): - os.unlink(self.log_file) - -+ @pytest.mark.skip("needs root access") - def test_jid_option(self): - jid = salt.utils.jid.gen_jid({}) - args = ["--jid", jid] -@@ -991,6 +994,7 @@ class SaltRunOptionParserTestCase(ParserBase, TestCase): - parser.parse_args(args) - assert parser.options.jid == jid - -+ @pytest.mark.skip("needs root access") - def test_jid_option_invalid(self): - jid = salt.utils.jid.gen_jid({}) + "A" - args = ["--jid", jid] -@@ -1041,6 +1045,7 @@ class SaltSSHOptionParserTestCase(ParserBase, TestCase): - if os.path.exists(self.ssh_log_file): - os.unlink(self.ssh_log_file) - -+ @pytest.mark.skip("needs root access") - def test_jid_option(self): - jid = salt.utils.jid.gen_jid({}) - args = ["--jid", jid] + self.args -@@ -1049,6 +1054,7 @@ class SaltSSHOptionParserTestCase(ParserBase, TestCase): - parser.parse_args(args) - assert parser.options.jid == jid - -+ @pytest.mark.skip("needs root access") - def test_jid_option_invalid(self): - jid = salt.utils.jid.gen_jid({}) + "A" - args = ["--jid", jid] + self.args -diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py -index 8c648f5288..74b9bc6981 100644 ---- a/tests/unit/utils/test_schema.py -+++ b/tests/unit/utils/test_schema.py -@@ -872,6 +872,7 @@ class ConfigTestCase(TestCase): - }, - ) - -+ @skipIf(True, "Does not work in network sandbox") - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") - def test_hostname_config_validation(self): - class TestConf(schema.Schema): -@@ -2098,6 +2099,7 @@ class ConfigTestCase(TestCase): - item = schema.NotItem(item=schema.BooleanItem()) - self.assertEqual(item.serialize(), {"not": item.item.serialize()}) - -+ @skipIf(True, "Does not work in network sandbox") - @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") - def test_not_config_validation(self): - class TestConf(schema.Schema): diff --git a/app-admin/salt/files/salt-3004.2-importlib.patch b/app-admin/salt/files/salt-3004.2-importlib.patch deleted file mode 100644 index 599b17290d5b..000000000000 --- a/app-admin/salt/files/salt-3004.2-importlib.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- a/salt/_compat.py 2022-06-28 01:50:45.630746476 -0000 -+++ b/salt/_compat.py 2022-06-28 01:51:52.970217848 -0000 -@@ -14,7 +14,7 @@ - if sys.version_info >= (3, 10): - # Python 3.10 will include a fix in importlib.metadata which allows us to - # get the distribution of a loaded entry-point -- import importlib.metadata # pylint: disable=no-member,no-name-in-module -+ import importlib.metadata as importlib_metadata # pylint: disable=no-member,no-name-in-module - else: - # importlib_metadata before version 3.3.0 does not include the functionality we need. - try: diff --git a/app-admin/salt/files/salt-3004.2-jinja-3.patch b/app-admin/salt/files/salt-3004.2-jinja-3.patch deleted file mode 100644 index 271921fd4564..000000000000 --- a/app-admin/salt/files/salt-3004.2-jinja-3.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff --git a/tests/unit/utils/test_jinja.py b/tests/unit/utils/test_jinja.py -index 6502831aff..dec847364a 100644 ---- a/tests/unit/utils/test_jinja.py -+++ b/tests/unit/utils/test_jinja.py -@@ -22,7 +22,8 @@ import salt.utils.files - import salt.utils.json - import salt.utils.stringutils - import salt.utils.yaml --from jinja2 import DictLoader, Environment, Markup, exceptions -+from jinja2 import DictLoader, Environment, exceptions -+from markupsafe import Markup - from salt.exceptions import SaltRenderError - from salt.utils.decorators.jinja import JinjaFilter - from salt.utils.jinja import ( diff --git a/app-admin/salt/files/salt-3004.2-pyzmq-23.patch b/app-admin/salt/files/salt-3004.2-pyzmq-23.patch deleted file mode 100644 index d912757ba7b8..000000000000 --- a/app-admin/salt/files/salt-3004.2-pyzmq-23.patch +++ /dev/null @@ -1,35 +0,0 @@ -diff --git a/salt/log/handlers/logstash_mod.py b/salt/log/handlers/logstash_mod.py -index bc462018f5..7e0d98c5ba 100644 ---- a/salt/log/handlers/logstash_mod.py -+++ b/salt/log/handlers/logstash_mod.py -@@ -160,6 +160,8 @@ import logging - import logging.handlers - import os - -+import zmq -+ - import salt.utils.json - import salt.utils.network - import salt.utils.stringutils -@@ -435,7 +437,7 @@ class ZMQLogstashHander(logging.Handler, NewStyleClassMixIn): - # Above the defined high water mark(unsent messages), start - # dropping them - self._publisher.setsockopt(zmq.HWM, self._zmq_hwm) -- except AttributeError: -+ except (AttributeError, zmq.error.ZMQError): - # In ZMQ >= 3.0, there are separate send and receive HWM - # settings - self._publisher.setsockopt(zmq.SNDHWM, self._zmq_hwm) -diff --git a/salt/transport/zeromq.py b/salt/transport/zeromq.py -index dc024d7eff..4c989095a5 100644 ---- a/salt/transport/zeromq.py -+++ b/salt/transport/zeromq.py -@@ -902,7 +902,7 @@ class ZeroMQPubServerChannel(salt.transport.server.PubServerChannel): - try: - pub_sock.setsockopt(zmq.HWM, self.opts.get("pub_hwm", 1000)) - # in zmq >= 3.0, there are separate send and receive HWM settings -- except AttributeError: -+ except (AttributeError, zmq.error.ZMQError): - # Set the High Water Marks. For more information on HWM, see: - # http://api.zeromq.org/4-1:zmq-setsockopt - pub_sock.setsockopt(zmq.SNDHWM, self.opts.get("pub_hwm", 1000)) diff --git a/app-admin/salt/files/salt-3005-tests.patch b/app-admin/salt/files/salt-3005-tests.patch new file mode 100644 index 000000000000..f170ef7dcafd --- /dev/null +++ b/app-admin/salt/files/salt-3005-tests.patch @@ -0,0 +1,94 @@ +diff --git a/tests/conftest.py b/tests/conftest.py +index 24ecf57e04..babc7ced90 100644 +--- a/tests/conftest.py ++++ b/tests/conftest.py +@@ -684,8 +684,6 @@ def salt_factories_config(): + """ + return { + "code_dir": str(CODE_DIR), +- "inject_coverage": MAYBE_RUN_COVERAGE, +- "inject_sitecustomize": MAYBE_RUN_COVERAGE, + "start_timeout": 120 + if (os.environ.get("JENKINS_URL") or os.environ.get("CI")) + else 60, +diff --git a/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py b/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py +index 230da8abc8..f6f1a70ce4 100644 +--- a/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py ++++ b/tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py +@@ -62,6 +62,7 @@ def _deferred_write_on_flush_proc_target(): + assert stds.stderr == "Foo\nBar\n" + + ++@pytest.mark.skip("doesn't work with sandbox") + def test_sync_with_handlers(): + proc = multiprocessing.Process(target=_sync_with_handlers_proc_target) + proc.start() +@@ -69,6 +70,7 @@ def test_sync_with_handlers(): + assert proc.exitcode == 0 + + ++@pytest.mark.skip("doesn't work with sandbox") + def test_deferred_write_on_flush(): + proc = multiprocessing.Process(target=_deferred_write_on_flush_proc_target) + proc.start() +diff --git a/tests/pytests/unit/modules/test_portage_config.py b/tests/pytests/unit/modules/test_portage_config.py +index 5cc6b90596..f344526909 100644 +--- a/tests/pytests/unit/modules/test_portage_config.py ++++ b/tests/pytests/unit/modules/test_portage_config.py +@@ -53,7 +53,7 @@ def test_enforce_nice_config(tmp_path): + ("use", ["apple", "-banana", "ananas", "orange"]), + ] + +- base_path = str(tmp_path / "/package.{0}") ++ base_path = str(f"{tmp_path}/package.{{0}}") + + def make_line(atom, addition): + return atom + (" " + addition if addition != "" else "") + "\n" +@@ -72,14 +72,3 @@ def test_enforce_nice_config(tmp_path): + portage_config, "_merge_flags", lambda l1, l2, _: list(set(l1 + l2)) + ): + portage_config.enforce_nice_config() +- +- for typ, additions in supported: +- for atom, file_name in atoms: +- with salt.utils.files.fopen( +- base_path.format(typ) + "/" + file_name, "r" +- ) as fh: +- for line in fh: +- for atom in line: +- assert atom not in line +- for addition in additions: +- assert addition not in line +diff --git a/tests/support/cli_scripts.py b/tests/support/cli_scripts.py +index 270af75d4b..50c08f4ed2 100644 +--- a/tests/support/cli_scripts.py ++++ b/tests/support/cli_scripts.py +@@ -32,8 +32,6 @@ def get_script_path(bin_dir, script_name): + bin_dir=bin_dir, + script_name=script_name, + code_dir=RUNTIME_VARS.CODE_DIR, +- inject_coverage="COVERAGE_PROCESS_START" in os.environ, +- inject_sitecustomize="COVERAGE_PROCESS_START" in os.environ, + ) + log.info("Returning script path %r", script_path) + return script_path +diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py +index 8c648f5288..ce5715a562 100644 +--- a/tests/unit/utils/test_schema.py ++++ b/tests/unit/utils/test_schema.py +@@ -873,6 +873,7 @@ class ConfigTestCase(TestCase): + ) + + @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") ++ @skipIf(True, "Does not work with sandbox") + def test_hostname_config_validation(self): + class TestConf(schema.Schema): + item = schema.HostnameItem(title="Item", description="Item description") +@@ -2099,6 +2100,7 @@ class ConfigTestCase(TestCase): + self.assertEqual(item.serialize(), {"not": item.item.serialize()}) + + @skipIf(HAS_JSONSCHEMA is False, "The 'jsonschema' library is missing") ++ @skipIf(True, "Does not work with sandbox") + def test_not_config_validation(self): + class TestConf(schema.Schema): + item = schema.ArrayItem( diff --git a/app-admin/salt/files/salt-3005.1-importlib-metadata-5-r1.patch b/app-admin/salt/files/salt-3005.1-importlib-metadata-5-r1.patch new file mode 100644 index 000000000000..c4c8056c1a6a --- /dev/null +++ b/app-admin/salt/files/salt-3005.1-importlib-metadata-5-r1.patch @@ -0,0 +1,29 @@ +diff --git a/salt/utils/entrypoints.py b/salt/utils/entrypoints.py +index 3effa0b494..9452878ade 100644 +--- a/salt/utils/entrypoints.py ++++ b/salt/utils/entrypoints.py +@@ -38,13 +38,20 @@ def iter_entry_points(group, name=None): + entry_points_listing = [] + entry_points = importlib_metadata.entry_points() + +- for entry_point_group, entry_points_list in entry_points.items(): +- if entry_point_group != group: +- continue +- for entry_point in entry_points_list: ++ try: ++ for entry_point in entry_points.select(group=group): + if name is not None and entry_point.name != name: + continue + entry_points_listing.append(entry_point) ++ except AttributeError: ++ # importlib-metadata<5.0.0 ++ for entry_point_group, entry_points_list in entry_points.items(): ++ if entry_point_group != group: ++ continue ++ for entry_point in entry_points_list: ++ if name is not None and entry_point.name != name: ++ continue ++ entry_points_listing.append(entry_point) + + return entry_points_listing + diff --git a/app-admin/salt/files/salt-3005.1-modules-file-python-3.11-host.patch b/app-admin/salt/files/salt-3005.1-modules-file-python-3.11-host.patch new file mode 100644 index 000000000000..2e9be8db18c0 --- /dev/null +++ b/app-admin/salt/files/salt-3005.1-modules-file-python-3.11-host.patch @@ -0,0 +1,123 @@ +diff --git a/salt/modules/file.py b/salt/modules/file.py +index f39d618203..93eeaf312e 100644 +--- a/salt/modules/file.py ++++ b/salt/modules/file.py +@@ -16,7 +16,6 @@ import hashlib + import itertools + import logging + import mmap +-import operator + import os + import re + import shutil +@@ -28,7 +27,6 @@ import time + import urllib.parse + from collections import namedtuple + from collections.abc import Iterable, Mapping +-from functools import reduce + + import salt.utils.args + import salt.utils.atomicfile +@@ -1622,38 +1620,38 @@ def comment_line(path, regex, char="#", cmnt=True, backup=".bak"): + + def _get_flags(flags): + """ +- Return an integer appropriate for use as a flag for the re module from a +- list of human-readable strings ++ Return the names of the Regex flags that correspond to flags + + .. code-block:: python + +- >>> _get_flags(['MULTILINE', 'IGNORECASE']) +- 10 ++ >>> _get_flags(['IGNORECASE', 'MULTILINE']) ++ re.IGNORECASE|re.MULTILINE + >>> _get_flags('MULTILINE') +- 8 +- >>> _get_flags(2) +- 2 ++ re.MULTILINE ++ >>> _get_flags(8) ++ re.MULTILINE ++ >>> _get_flags(re.IGNORECASE) ++ re.IGNORECASE + """ +- if isinstance(flags, str): ++ if isinstance(flags, re.RegexFlag): ++ return flags ++ elif isinstance(flags, int): ++ return re.RegexFlag(flags) ++ elif isinstance(flags, str): + flags = [flags] + + if isinstance(flags, Iterable) and not isinstance(flags, Mapping): +- _flags_acc = [0] # An initial 0 avoids resucing on empty list, an error ++ _flags = re.RegexFlag(0) + for flag in flags: +- _flag = getattr(re, str(flag).upper()) +- +- if not isinstance(_flag, int): +- raise SaltInvocationError("Invalid re flag given: {}".format(flag)) +- +- _flags_acc.append(_flag) +- +- return reduce(operator.__or__, _flags_acc) +- elif isinstance(flags, int): +- return flags ++ _flag = getattr(re.RegexFlag, str(flag).upper(), None) ++ if not _flag: ++ raise CommandExecutionError(f"Invalid re flag given: {flag}") ++ _flags |= _flag ++ return _flags + else: +- raise SaltInvocationError( +- 'Invalid re flags: "{}", must be given either as a single flag ' +- "string, a list of strings, or as an integer".format(flags) ++ raise CommandExecutionError( ++ f'Invalid re flags: "{flags}", must be given either as a single flag ' ++ "string, a list of strings, as an integer, or as an re flag" + ) + + +@@ -2513,8 +2511,8 @@ def replace( + "Only one of append and prepend_if_not_found is permitted" + ) + +- flags_num = _get_flags(flags) +- cpattern = re.compile(salt.utils.stringutils.to_bytes(pattern), flags_num) ++ re_flags = _get_flags(flags) ++ cpattern = re.compile(salt.utils.stringutils.to_bytes(pattern), re_flags) + filesize = os.path.getsize(path) + if bufsize == "file": + bufsize = filesize +@@ -2582,7 +2580,7 @@ def replace( + "^{}($|(?=\r\n))".format(re.escape(content)) + ), + r_data, +- flags=flags_num, ++ flags=re_flags, + ): + # Content was found, so set found. + found = True +@@ -3132,7 +3130,11 @@ def search(path, pattern, flags=8, bufsize=1, ignore_if_missing=False, multiline + salt '*' file.search /etc/crontab 'mymaintenance.sh' + """ + if multiline: +- flags = _add_flags(flags, "MULTILINE") ++ re_flags = _add_flags(flags, "MULTILINE") ++ else: ++ re_flags = _get_flags(flags) ++ ++ if re.RegexFlag.MULTILINE in re_flags: + bufsize = "file" + + # This function wraps file.replace on purpose in order to enforce +@@ -3142,7 +3144,7 @@ def search(path, pattern, flags=8, bufsize=1, ignore_if_missing=False, multiline + path, + pattern, + "", +- flags=flags, ++ flags=re_flags, + bufsize=bufsize, + dry_run=True, + search_only=True, diff --git a/app-admin/salt/files/salt-3005.1-no-entry-points.patch b/app-admin/salt/files/salt-3005.1-no-entry-points.patch new file mode 100644 index 000000000000..5d1da8f751e4 --- /dev/null +++ b/app-admin/salt/files/salt-3005.1-no-entry-points.patch @@ -0,0 +1,13 @@ +diff --git a/setup.py b/setup.py +index bd11ff95f7..3b83f7b6ff 100755 +--- a/setup.py ++++ b/setup.py +@@ -1173,7 +1173,7 @@ class SaltDistribution(distutils.dist.Distribution): + return scripts + + @property +- def _property_entry_points(self): ++ def _property_entry_points_disabled(self): + entrypoints = { + "pyinstaller40": [ + "hook-dirs = salt.utils.pyinstaller:get_hook_dirs", diff --git a/app-admin/salt/files/salt-3005.1-tests.patch b/app-admin/salt/files/salt-3005.1-tests.patch new file mode 100644 index 000000000000..101574bdd303 --- /dev/null +++ b/app-admin/salt/files/salt-3005.1-tests.patch @@ -0,0 +1,40 @@ +diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py +index 8c648f5288..5886813e28 100644 +--- a/tests/unit/utils/test_schema.py ++++ b/tests/unit/utils/test_schema.py +@@ -528,7 +528,7 @@ class ConfigTestCase(TestCase): + jsonschema.validate( + {"personal_access_token": "foo"}, Requirements.serialize() + ) +- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"): ++ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"): + self.assertIn( + "'ssh_key_file' is a required property", excinfo.exception.message + ) +@@ -1851,7 +1851,7 @@ class ConfigTestCase(TestCase): + jsonschema.validate( + {"item": {"sides": "4", "color": "blue"}}, TestConf.serialize() + ) +- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"): ++ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"): + self.assertIn("'4'", excinfo.exception.message) + self.assertIn("is not of type", excinfo.exception.message) + self.assertIn("'boolean'", excinfo.exception.message) +@@ -1974,7 +1974,7 @@ class ConfigTestCase(TestCase): + + with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo: + jsonschema.validate({"item": ["maybe"]}, TestConf.serialize()) +- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"): ++ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"): + self.assertIn("'maybe'", excinfo.exception.message) + self.assertIn("is not one of", excinfo.exception.message) + self.assertIn("'yes'", excinfo.exception.message) +@@ -2036,7 +2036,7 @@ class ConfigTestCase(TestCase): + + with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo: + jsonschema.validate({"item": ["maybe"]}, TestConf.serialize()) +- if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0"): ++ if JSONSCHEMA_VERSION >= _LooseVersion("3.0.0") and JSONSCHEMA_VERSION < _LooseVersion("4.17.0"): + self.assertIn("'maybe'", excinfo.exception.message) + self.assertIn("is not one of", excinfo.exception.message) + self.assertIn("'yes'", excinfo.exception.message) diff --git a/app-admin/salt/files/salt-3006.2-tests.patch b/app-admin/salt/files/salt-3006.2-tests.patch new file mode 100644 index 000000000000..abec5157df30 --- /dev/null +++ b/app-admin/salt/files/salt-3006.2-tests.patch @@ -0,0 +1,114 @@ +diff --git a/tests/pytests/unit/modules/dockermod/test_module.py b/tests/pytests/unit/modules/dockermod/test_module.py +index 8fb7806497..584d416412 100644 +--- a/tests/pytests/unit/modules/dockermod/test_module.py ++++ b/tests/pytests/unit/modules/dockermod/test_module.py +@@ -354,10 +354,6 @@ def test_update_mine(): + mine_mock.assert_called_once() + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_list_networks(): + """ + test list networks. +@@ -378,10 +374,6 @@ def test_list_networks(): + client.networks.assert_called_once_with(names=["foo"], ids=["01234"]) + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_create_network(): + """ + test create network. +@@ -422,10 +414,6 @@ def test_create_network(): + ) + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_remove_network(): + """ + test remove network. +@@ -444,10 +432,6 @@ def test_remove_network(): + client.remove_network.assert_called_once_with("foo") + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_inspect_network(): + """ + test inspect network. +@@ -466,10 +450,6 @@ def test_inspect_network(): + client.inspect_network.assert_called_once_with("foo") + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_connect_container_to_network(): + """ + test connect_container_to_network +@@ -491,10 +471,6 @@ def test_connect_container_to_network(): + client.connect_container_to_network.assert_called_once_with("container", "foo") + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_disconnect_container_from_network(): + """ + test disconnect_container_from_network +@@ -513,10 +489,6 @@ def test_disconnect_container_from_network(): + client.disconnect_container_from_network.assert_called_once_with("container", "foo") + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_list_volumes(): + """ + test list volumes. +@@ -539,10 +511,6 @@ def test_list_volumes(): + ) + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_create_volume(): + """ + test create volume. +@@ -569,10 +537,6 @@ def test_create_volume(): + ) + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_remove_volume(): + """ + test remove volume. +@@ -591,10 +555,6 @@ def test_remove_volume(): + client.remove_volume.assert_called_once_with("foo") + + +-@pytest.mark.skipif( +- docker_mod.docker.version_info < (1, 5, 0), +- reason="docker module must be installed to run this test or is too old. >=1.5.0", +-) + def test_inspect_volume(): + """ + test inspect volume. diff --git a/app-admin/salt/metadata.xml b/app-admin/salt/metadata.xml index a8832491314e..4e6f05022cda 100644 --- a/app-admin/salt/metadata.xml +++ b/app-admin/salt/metadata.xml @@ -24,16 +24,15 @@ backbone of cloud and data center management. <flag name="cheetah">Enable support for <pkg>dev-python/cheetah3</pkg></flag> <flag name="cherrypy">Enable support for using cherrypy.</flag> <flag name="libcloud">Enable salt-cloud support via libcloud.</flag> - <flag name="libvirt">Support managing virtual machines with app-emulation/libvirt.</flag> + <flag name="libvirt">Support managing virtual machines with <pkg>app-emulation/libvirt</pkg>.</flag> <flag name="genshi">Enable support for <pkg>dev-python/genshi</pkg></flag> <flag name="gnupg">Enable support for gnupg via python-gnupg.</flag> - <flag name="keyring">Enable support for keyrings via python-keyring.</flag> <flag name="mako">Add support for using the mako template engine for parsing salt states.</flag> <flag name="mongodb">Support returning data to a mongodb server.</flag> <flag name="neutron">Support the OpenStack neutron network service.</flag> <flag name="nova">Enable support for the OpenStack Nova API</flag> <flag name="openssl">Add support for using TLS via OpenSSL.</flag> - <flag name="portage">Add support for package state enforcement using sys-apps/portage</flag> + <flag name="portage">Add support for package state enforcement using <pkg>sys-apps/portage</pkg></flag> <flag name="raet">Add support for the new RAET transport.</flag> <flag name="redis">Support returning data to a redis database.</flag> <flag name="zeromq">Add support for the zeromq transport.</flag> diff --git a/app-admin/salt/salt-3002.9.ebuild b/app-admin/salt/salt-3002.9.ebuild deleted file mode 100644 index e3287689891c..000000000000 --- a/app-admin/salt/salt-3002.9.ebuild +++ /dev/null @@ -1,200 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{8..9} ) - -inherit systemd distutils-r1 - -DESCRIPTION="Salt is a remote execution and configuration manager" -HOMEPAGE="https://www.saltstack.com/resources/community/ - https://github.com/saltstack" - -if [[ ${PV} == 9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" - EGIT_BRANCH="develop" - SRC_URI="" -else - SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~x86" -fi - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako - mongodb neutron nova openssl portage profile redis selinux test raet - +zeromq vim-syntax" - -RDEPEND=" - sys-apps/pciutils - >=dev-python/distro-1.5[${PYTHON_USEDEP}] - dev-python/jinja[${PYTHON_USEDEP}] - dev-python/libnacl[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] - >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/markupsafe[${PYTHON_USEDEP}] - >=dev-python/requests-1.0.0[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}] - dev-python/toml[${PYTHON_USEDEP}] - dev-python/watchdog[${PYTHON_USEDEP}] - libcloud? ( >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] ) - mako? ( dev-python/mako[${PYTHON_USEDEP}] ) - ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) - libvirt? ( - $(python_gen_cond_dep 'dev-python/libvirt-python[${PYTHON_USEDEP}]' python3_8) - ) - openssl? ( - dev-libs/openssl:0=[-bindist(-)] - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) - raet? ( - >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] - >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] - >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] - ) - cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) - cheetah? ( dev-python/cheetah3[${PYTHON_USEDEP}] ) - genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) - mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) - portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) - keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) - redis? ( dev-python/redis-py[${PYTHON_USEDEP}] ) - selinux? ( sec-policy/selinux-salt ) - nova? ( - $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3_8) - ) - neutron? ( - $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3_8) - ) - gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) - profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) - vim-syntax? ( app-vim/salt-vim ) - zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) -" -BDEPEND=" - test? ( - ${RDEPEND} - >=dev-python/boto-2.32.1[${PYTHON_USEDEP}] - >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] - >=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}] - dev-python/mako[${PYTHON_USEDEP}] - >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] - >=dev-python/moto-0.3.6[${PYTHON_USEDEP}] - dev-python/pip[${PYTHON_USEDEP}] - dev-python/psutil[${PYTHON_USEDEP}] - dev-python/pytest[${PYTHON_USEDEP}] - dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] - >=dev-python/pytest-salt-factories-0.93.0[${PYTHON_USEDEP}] - dev-python/pytest-tempdir[${PYTHON_USEDEP}] - >=dev-python/virtualenv-20.0.20[${PYTHON_USEDEP}] - net-dns/bind-tools - !x86? ( >=dev-python/boto3-1.3.15[${PYTHON_USEDEP}] ) - )" - -DOCS=( README.rst AUTHORS ) - -REQUIRED_USE=" - || ( raet zeromq ) - test? ( cheetah genshi ) -" -RESTRICT="!test? ( test ) x86? ( test )" - -PATCHES=( - "${FILESDIR}/salt-2019.2.0-skip-tests-that-oom-machine.patch" - "${FILESDIR}/salt-3002-dont-realpath-on-tmpdir.patch" - "${FILESDIR}/salt-3002-tests.patch" - "${FILESDIR}/salt-3002.5-tests.patch" - "${FILESDIR}/salt-3002.7-tests.patch" - "${FILESDIR}/salt-3004.2-jinja-3.patch" - "${FILESDIR}/salt-3002.8-tests.patch" - "${FILESDIR}/salt-3002.8-relax-pyzmq-dep.patch" -) - -python_prepare_all() { - # remove tests with external dependencies that may not be available, and - # tests that don't work in sandbox - rm tests/unit/{test_{zypp_plugins,module_names},utils/test_{extend,cache}}.py || die - rm tests/unit/modules/test_{file,boto_{vpc,secgroup,elb}}.py || die - rm tests/unit/states/test_boto_vpc.py || die - rm tests/support/gitfs.py tests/unit/runners/test_git_pillar.py || die - rm salt/utils/virtualbox.py || die - - # tests that require network access - rm tests/unit/{states,modules}/test_zcbuildout.py || die - - sed -i 's:log.trace(:log.debug(:' \ - salt/fileserver/roots.py salt/grains/core.py salt/states/saltmod.py || die - - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die - # pycryptodome rather than pycryptodomex - find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die - - distutils-r1_python_prepare_all -} - -python_prepare() { - einfo "Fixing collections.abc warnings for ${EPYTHON}" - local abc - abc="$("${EPYTHON}" -c 'import collections.abc; print("|".join((c for c in dir(collections.abc) if not c.startswith("_"))))')" || die - find -name '*.py' -type f -print0 | xargs -0 sed -r -e "s:collections\\.(${abc}):collections.abc.\\1:g" -i || die -} - -python_install_all() { - local svc - USE_SETUPTOOLS=1 distutils-r1_python_install_all - - for svc in minion master syndic api; do - newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} - newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} - systemd_dounit "${FILESDIR}"/salt-${svc}.service - done - - insinto /etc/${PN} - doins -r conf/* -} - -python_test() { - local tempdir - # testsuite likes lots of files - ulimit -n 3072 || die - - # ${T} is too long a path for the tests to work - tempdir="$(mktemp -du --tmpdir=/tmp salt-XXX)" - mkdir "${T}/$(basename "${tempdir}")" - - ( - cleanup() { rm -f "${tempdir}" || die; } - - trap cleanup EXIT - - addwrite "${tempdir}" - ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}" || die - - USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ - TMPDIR="${tempdir}" \ - ${EPYTHON} tests/runtests.py \ - --unit-tests --no-report --verbose \ - || die "testing failed with ${EPYTHON}" - ) -} - -pkg_postinst() { - if use python_targets_python3_8; then - if use nova; then - ewarn "Salt's nova functionality will not work with python3.8 since" - ewarn "dev-python/python-novaclient does not support it yet" - fi - if use neutron; then - ewarn "Salt's neutron functionality will not work with python3.8 since" - ewarn "dev-python/python-neutronclient does not support it yet" - fi - if use libvirt; then - ewarn "Salt's libvirt functionality will not work with python3.8 since" - ewarn "dev-python/libvirt-python does not support it yet" - fi - fi -} diff --git a/app-admin/salt/salt-3003.4-r1.ebuild b/app-admin/salt/salt-3003.4-r1.ebuild deleted file mode 100644 index 50ee0911545b..000000000000 --- a/app-admin/salt/salt-3003.4-r1.ebuild +++ /dev/null @@ -1,205 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{8..9} ) - -inherit systemd distutils-r1 - -DESCRIPTION="Salt is a remote execution and configuration manager" -HOMEPAGE="https://www.saltstack.com/resources/community/ - https://github.com/saltstack" - -if [[ ${PV} == 9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" - EGIT_BRANCH="develop" - SRC_URI="" -else - SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~x86" -fi - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako - mongodb neutron nova openssl portage profile redis selinux test raet - +zeromq vim-syntax" - -RDEPEND=" - sys-apps/pciutils - >=dev-python/distro-1.5[${PYTHON_USEDEP}] - dev-python/jinja[${PYTHON_USEDEP}] - dev-python/libnacl[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] - >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/markupsafe[${PYTHON_USEDEP}] - >=dev-python/requests-1.0.0[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}] - >=dev-python/toml-0.10.2[${PYTHON_USEDEP}] - dev-python/watchdog[${PYTHON_USEDEP}] - libcloud? ( >=dev-python/libcloud-2.5.0[${PYTHON_USEDEP}] ) - mako? ( dev-python/mako[${PYTHON_USEDEP}] ) - ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) - libvirt? ( - $(python_gen_cond_dep 'dev-python/libvirt-python[${PYTHON_USEDEP}]' python3_8) - ) - openssl? ( - dev-libs/openssl:0=[-bindist(-)] - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) - raet? ( - >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] - >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] - >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] - ) - cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) - cheetah? ( dev-python/cheetah3[${PYTHON_USEDEP}] ) - genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) - mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) - portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) - keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) - redis? ( dev-python/redis-py[${PYTHON_USEDEP}] ) - selinux? ( sec-policy/selinux-salt ) - nova? ( - $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3_8) - ) - neutron? ( - $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3_8) - ) - gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) - profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) - vim-syntax? ( app-vim/salt-vim ) - zeromq? ( >=dev-python/pyzmq-19.1.0[${PYTHON_USEDEP}] ) -" -BDEPEND=" - test? ( - ${RDEPEND} - >=dev-python/boto-2.32.1[${PYTHON_USEDEP}] - >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] - dev-python/mako[${PYTHON_USEDEP}] - >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] - >=dev-python/moto-1.3.14[${PYTHON_USEDEP}] - dev-python/pip[${PYTHON_USEDEP}] - dev-python/psutil[${PYTHON_USEDEP}] - dev-python/pyopenssl[${PYTHON_USEDEP}] - dev-python/pytest[${PYTHON_USEDEP}] - =dev-python/pytest-salt-factories-0.121*[${PYTHON_USEDEP}] - dev-python/pytest-tempdir[${PYTHON_USEDEP}] - dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] - dev-python/pytest-subtests[${PYTHON_USEDEP}] - dev-python/flaky[${PYTHON_USEDEP}] - dev-python/libcloud[${PYTHON_USEDEP}] - net-dns/bind-tools - >=dev-python/virtualenv-20.0.20[${PYTHON_USEDEP}] - !x86? ( >=dev-python/boto3-1.19.63[${PYTHON_USEDEP}] ) - )" - -DOCS=( README.rst AUTHORS ) - -REQUIRED_USE="|| ( raet zeromq ) - test? ( cheetah genshi )" -RESTRICT="!test? ( test ) x86? ( test )" - -PATCHES=( - "${FILESDIR}/salt-3003-skip-tests-that-oom-machine.patch" - "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" - "${FILESDIR}/salt-3002-tests.patch" - "${FILESDIR}/salt-3003.3-tests.patch" - "${FILESDIR}/salt-3003.1-tests.patch" - "${FILESDIR}/salt-3004.1-jinja-3.patch" - "${FILESDIR}/salt-3003.4-tests.patch" - "${FILESDIR}/salt-3003.4-relax-pyzmq-dep.patch" -) - -python_prepare_all() { - # remove tests with external dependencies that may not be available, and - # tests that don't work in sandbox - rm tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py || die - rm tests/unit/modules/test_{file,boto_{vpc,secgroup,elb}}.py || die - rm tests/unit/states/test_boto_vpc.py || die - rm tests/support/gitfs.py tests/unit/runners/test_git_pillar.py || die - rm tests/pytests/functional/transport/server/test_req_channel.py || die - - # tests that require network access - rm tests/unit/{states,modules}/test_zcbuildout.py || die - rm -r tests/integration/cloud || die - rm -r tests/kitchen/tests/wordpress/tests || die - rm tests/kitchen/test_kitchen.py || die - rm tests/unit/modules/test_network.py || die - - # tests require root access - rm tests/integration/pillar/test_git_pillar.py || die - rm tests/integration/states/test_supervisord.py || die - rm tests/pytests/unit/client/test_ssh.py || die - - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die - # pycryptodome rather than pycryptodomex - find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die - - distutils-r1_python_prepare_all -} - -python_prepare() { - einfo "Fixing collections.abc warnings for ${EPYTHON}" - local abc - abc="$("${EPYTHON}" -c 'import collections.abc; print("|".join((c for c in dir(collections.abc) if not c.startswith("_"))))')" || die - find -name '*.py' -type f -print0 | xargs -0 sed -r -e "s:collections\\.(${abc}):collections.abc.\\1:g" -i || die - - # removes contextvars, see bug: https://bugs.gentoo.org/799431 - sed -i '/^contextvars/d' requirements/base.txt || die -} - -python_install_all() { - local svc - USE_SETUPTOOLS=1 distutils-r1_python_install_all - - for svc in minion master syndic api; do - newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} - newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} - systemd_dounit "${FILESDIR}"/salt-${svc}.service - done - - insinto /etc/${PN} - doins -r conf/* -} - -python_test() { - # testsuite likes lots of files - ulimit -n 4096 || die - - # ${T} is too long a path for the tests to work - local TMPDIR - TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" - ( - export TMPDIR - cleanup() { rm -rf "${TMPDIR}" || die; } - - trap cleanup EXIT - - addwrite "${TMPDIR}" - - USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ - "${EPYTHON}" -m pytest -vv \ - || die "testing failed with ${EPYTHON}" - ) -} - -pkg_postinst() { - if use python_targets_python3_8; then - if use nova; then - ewarn "Salt's nova functionality will not work with python3.8 since" - ewarn "dev-python/python-novaclient does not support it yet" - fi - if use neutron; then - ewarn "Salt's neutron functionality will not work with python3.8 since" - ewarn "dev-python/python-neutronclient does not support it yet" - fi - if use libvirt; then - ewarn "Salt's libvirt functionality will not work with python3.8 since" - ewarn "dev-python/libvirt-python does not support it yet" - fi - fi -} diff --git a/app-admin/salt/salt-3003.5-r1.ebuild b/app-admin/salt/salt-3003.5-r1.ebuild deleted file mode 100644 index e46b069a8edb..000000000000 --- a/app-admin/salt/salt-3003.5-r1.ebuild +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{8..9} ) - -inherit systemd distutils-r1 - -DESCRIPTION="Salt is a remote execution and configuration manager" -HOMEPAGE="https://www.saltstack.com/resources/community/ - https://github.com/saltstack" - -if [[ ${PV} == 9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" - EGIT_BRANCH="develop" - SRC_URI="" -else - SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~x86" -fi - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako - mongodb neutron nova openssl portage profile redis selinux test raet - +zeromq vim-syntax" - -RDEPEND=" - sys-apps/pciutils - >=dev-python/distro-1.5[${PYTHON_USEDEP}] - dev-python/jinja[${PYTHON_USEDEP}] - dev-python/libnacl[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] - >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/markupsafe[${PYTHON_USEDEP}] - >=dev-python/requests-1.0.0[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}] - >=dev-python/toml-0.10.2[${PYTHON_USEDEP}] - dev-python/watchdog[${PYTHON_USEDEP}] - libcloud? ( >=dev-python/libcloud-2.5.0[${PYTHON_USEDEP}] ) - mako? ( dev-python/mako[${PYTHON_USEDEP}] ) - ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) - libvirt? ( - $(python_gen_cond_dep 'dev-python/libvirt-python[${PYTHON_USEDEP}]' python3_8) - ) - openssl? ( - dev-libs/openssl:0=[-bindist(-)] - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) - raet? ( - >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] - >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] - >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] - ) - cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) - cheetah? ( dev-python/cheetah3[${PYTHON_USEDEP}] ) - genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) - mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) - portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) - keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) - redis? ( dev-python/redis-py[${PYTHON_USEDEP}] ) - selinux? ( sec-policy/selinux-salt ) - nova? ( - $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3_8) - ) - neutron? ( - $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3_8) - ) - gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) - profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) - vim-syntax? ( app-vim/salt-vim ) - zeromq? ( >=dev-python/pyzmq-19.1.0[${PYTHON_USEDEP}] ) -" -BDEPEND=" - test? ( - ${RDEPEND} - >=dev-python/boto-2.32.1[${PYTHON_USEDEP}] - >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] - dev-python/mako[${PYTHON_USEDEP}] - >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] - >=dev-python/moto-1.3.14[${PYTHON_USEDEP}] - dev-python/pip[${PYTHON_USEDEP}] - dev-python/psutil[${PYTHON_USEDEP}] - dev-python/pyopenssl[${PYTHON_USEDEP}] - dev-python/pytest[${PYTHON_USEDEP}] - =dev-python/pytest-salt-factories-0.121*[${PYTHON_USEDEP}] - dev-python/pytest-tempdir[${PYTHON_USEDEP}] - dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] - dev-python/pytest-subtests[${PYTHON_USEDEP}] - dev-python/flaky[${PYTHON_USEDEP}] - dev-python/libcloud[${PYTHON_USEDEP}] - net-dns/bind-tools - >=dev-python/virtualenv-20.0.20[${PYTHON_USEDEP}] - !x86? ( >=dev-python/boto3-1.19.63[${PYTHON_USEDEP}] ) - )" - -DOCS=( README.rst AUTHORS ) - -REQUIRED_USE="|| ( raet zeromq ) - test? ( cheetah genshi )" -RESTRICT="!test? ( test ) x86? ( test )" - -# tests currently broken -RESTRICT+=" test" - -PATCHES=( - "${FILESDIR}/salt-3003-skip-tests-that-oom-machine.patch" - "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" - "${FILESDIR}/salt-3002-tests.patch" - "${FILESDIR}/salt-3003.3-tests.patch" - "${FILESDIR}/salt-3003.1-tests.patch" - "${FILESDIR}/salt-3004.2-jinja-3.patch" - "${FILESDIR}/salt-3003.4-tests.patch" - "${FILESDIR}/salt-3003.4-relax-pyzmq-dep.patch" - "${FILESDIR}/salt-3004.2-pyzmq-23.patch" -) - -python_prepare_all() { - # remove tests with external dependencies that may not be available, and - # tests that don't work in sandbox - rm tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py || die - rm tests/unit/modules/test_{file,boto_{vpc,secgroup,elb}}.py || die - rm tests/unit/states/test_boto_vpc.py || die - rm tests/support/gitfs.py tests/unit/runners/test_git_pillar.py || die - rm tests/pytests/functional/transport/server/test_req_channel.py || die - - # tests that require network access - rm tests/unit/{states,modules}/test_zcbuildout.py || die - rm -r tests/integration/cloud || die - rm -r tests/kitchen/tests/wordpress/tests || die - rm tests/kitchen/test_kitchen.py || die - rm tests/unit/modules/test_network.py || die - - # tests require root access - rm tests/integration/pillar/test_git_pillar.py || die - rm tests/integration/states/test_supervisord.py || die - rm tests/pytests/unit/client/test_ssh.py || die - - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die - # pycryptodome rather than pycryptodomex - find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die - - distutils-r1_python_prepare_all -} - -python_prepare() { - einfo "Fixing collections.abc warnings for ${EPYTHON}" - local abc - abc="$("${EPYTHON}" -c 'import collections.abc; print("|".join((c for c in dir(collections.abc) if not c.startswith("_"))))')" || die - find -name '*.py' -type f -print0 | xargs -0 sed -r -e "s:collections\\.(${abc}):collections.abc.\\1:g" -i || die - - # removes contextvars, see bug: https://bugs.gentoo.org/799431 - sed -i '/^contextvars/d' requirements/base.txt || die -} - -python_install_all() { - local svc - USE_SETUPTOOLS=1 distutils-r1_python_install_all - - for svc in minion master syndic api; do - newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} - newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} - systemd_dounit "${FILESDIR}"/salt-${svc}.service - done - - insinto /etc/${PN} - doins -r conf/* -} - -python_test() { - # testsuite likes lots of files - ulimit -n 4096 || die - - # ${T} is too long a path for the tests to work - local TMPDIR - TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" - ( - export TMPDIR - cleanup() { rm -rf "${TMPDIR}" || die; } - - trap cleanup EXIT - - addwrite "${TMPDIR}" - - USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ - "${EPYTHON}" -m pytest -vv \ - || die "testing failed with ${EPYTHON}" - ) -} - -pkg_postinst() { - if use python_targets_python3_8; then - if use nova; then - ewarn "Salt's nova functionality will not work with python3.8 since" - ewarn "dev-python/python-novaclient does not support it yet" - fi - if use neutron; then - ewarn "Salt's neutron functionality will not work with python3.8 since" - ewarn "dev-python/python-neutronclient does not support it yet" - fi - if use libvirt; then - ewarn "Salt's libvirt functionality will not work with python3.8 since" - ewarn "dev-python/libvirt-python does not support it yet" - fi - fi -} diff --git a/app-admin/salt/salt-3004.1-r4.ebuild b/app-admin/salt/salt-3004.1-r4.ebuild deleted file mode 100644 index 5352a20caf11..000000000000 --- a/app-admin/salt/salt-3004.1-r4.ebuild +++ /dev/null @@ -1,207 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{8..10} ) - -inherit systemd distutils-r1 - -DESCRIPTION="Salt is a remote execution and configuration manager" -HOMEPAGE="https://www.saltstack.com/resources/community/ - https://github.com/saltstack" - -if [[ ${PV} == 9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" - EGIT_BRANCH="develop" - SRC_URI="" -else - SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" - KEYWORDS="amd64 ~arm ~arm64 ~riscv x86" -fi - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako - mongodb neutron nova openssl portage profile redis selinux test raet - +zeromq vim-syntax" - -RDEPEND=" - sys-apps/pciutils - >=dev-python/distro-1.5[${PYTHON_USEDEP}] - >=dev-python/jinja-3.0[${PYTHON_USEDEP}] - dev-python/libnacl[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] - >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] - >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/markupsafe[${PYTHON_USEDEP}] - >=dev-python/requests-1.0.0[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}] - >=dev-python/toml-0.10.2[${PYTHON_USEDEP}] - dev-python/watchdog[${PYTHON_USEDEP}] - libcloud? ( >=dev-python/libcloud-2.5.0[${PYTHON_USEDEP}] ) - mako? ( dev-python/mako[${PYTHON_USEDEP}] ) - ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) - libvirt? ( - $(python_gen_cond_dep 'dev-python/libvirt-python[${PYTHON_USEDEP}]' python3_8) - ) - openssl? ( - dev-libs/openssl:0=[-bindist(-)] - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) - raet? ( - >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] - >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] - >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] - ) - cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) - cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) - genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) - mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) - portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) - keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) - redis? ( dev-python/redis-py[${PYTHON_USEDEP}] ) - selinux? ( sec-policy/selinux-salt ) - nova? ( - $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3_8) - ) - neutron? ( - $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3_8) - ) - gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) - profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) - vim-syntax? ( app-vim/salt-vim ) - zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) -" -BDEPEND=" - test? ( - ${RDEPEND} - >=dev-python/boto-2.32.1[${PYTHON_USEDEP}] - >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] - dev-python/mako[${PYTHON_USEDEP}] - >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] - >=dev-python/moto-0.3.6[${PYTHON_USEDEP}] - dev-python/passlib - dev-python/pip[${PYTHON_USEDEP}] - dev-python/pyopenssl[${PYTHON_USEDEP}] - dev-python/pytest[${PYTHON_USEDEP}] - >=dev-python/pytest-salt-factories-1.0.0_rc13[${PYTHON_USEDEP}] - dev-python/pytest-tempdir[${PYTHON_USEDEP}] - dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] - dev-python/pytest-subtests[${PYTHON_USEDEP}] - dev-python/flaky[${PYTHON_USEDEP}] - dev-python/libcloud[${PYTHON_USEDEP}] - net-dns/bind-tools - >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] - !x86? ( >=dev-python/boto3-1.17.67[${PYTHON_USEDEP}] ) - )" - -DOCS=( README.rst AUTHORS ) - -REQUIRED_USE="|| ( raet zeromq ) - test? ( cheetah genshi )" -RESTRICT="!test? ( test ) x86? ( test )" - -PATCHES=( - "${FILESDIR}/salt-3003-skip-tests-that-oom-machine.patch" - "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" - "${FILESDIR}/salt-3002-tests.patch" - "${FILESDIR}/salt-3003.1-tests.patch" - "${FILESDIR}/salt-3004.1-jinja-3.patch" - "${FILESDIR}/salt-3004.1-tests.patch" - "${FILESDIR}/salt-3004.1-relax-pyzmq-dep.patch" - "${FILESDIR}/salt-3004.1-py310.patch" -) - -python_prepare_all() { - # remove tests with external dependencies that may not be available, and - # tests that don't work in sandbox - rm tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py || die - rm tests/unit/modules/test_{file,boto_{vpc,secgroup,elb}}.py || die - rm tests/unit/states/test_boto_vpc.py || die - rm tests/support/gitfs.py tests/unit/runners/test_git_pillar.py || die - rm tests/pytests/functional/transport/server/test_req_channel.py || die - - # tests that require network access - rm tests/unit/{states,modules}/test_zcbuildout.py || die - rm -r tests/integration/cloud || die - rm -r tests/kitchen/tests/wordpress/tests || die - rm tests/kitchen/test_kitchen.py || die - rm tests/unit/modules/test_network.py || die - rm tests/pytests/functional/modules/test_pip.py || die - rm tests/pytests/unit/client/ssh/test_ssh.py || die - - # tests require root access - rm tests/integration/pillar/test_git_pillar.py || die - rm tests/integration/states/test_supervisord.py || die - - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die - # pycryptodome rather than pycryptodomex - find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die - - distutils-r1_python_prepare_all -} - -python_prepare() { - einfo "Fixing collections.abc warnings for ${EPYTHON}" - local abc - abc="$("${EPYTHON}" -c 'import collections.abc; print("|".join((c for c in dir(collections.abc) if not c.startswith("_"))))')" || die - find -name '*.py' -type f -print0 | xargs -0 sed -r -e "s:collections\\.(${abc}):collections.abc.\\1:g" -i || die - - # removes contextvars, see bug: https://bugs.gentoo.org/799431 - sed -i '/^contextvars/d' requirements/base.txt || die -} - -python_install_all() { - local svc - USE_SETUPTOOLS=1 distutils-r1_python_install_all - - for svc in minion master syndic api; do - newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} - newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} - systemd_dounit "${FILESDIR}"/salt-${svc}.service - done - - insinto /etc/${PN} - doins -r conf/* -} - -python_test() { - # testsuite likes lots of files - ulimit -n 4096 || die - - # ${T} is too long a path for the tests to work - local TMPDIR - TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" - ( - export TMPDIR - cleanup() { rm -rf "${TMPDIR}" || die; } - - trap cleanup EXIT - - addwrite "${TMPDIR}" - - USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ - "${EPYTHON}" -m pytest -vv \ - || die "testing failed with ${EPYTHON}" - ) -} - -pkg_postinst() { - if use python_targets_python3_8; then - if use nova; then - ewarn "Salt's nova functionality will not work with python3.8 since" - ewarn "dev-python/python-novaclient does not support it yet" - fi - if use neutron; then - ewarn "Salt's neutron functionality will not work with python3.8 since" - ewarn "dev-python/python-neutronclient does not support it yet" - fi - if use libvirt; then - ewarn "Salt's libvirt functionality will not work with python3.8 since" - ewarn "dev-python/libvirt-python does not support it yet" - fi - fi -} diff --git a/app-admin/salt/salt-3004.2-r1.ebuild b/app-admin/salt/salt-3004.2-r1.ebuild deleted file mode 100644 index 373dd7c97624..000000000000 --- a/app-admin/salt/salt-3004.2-r1.ebuild +++ /dev/null @@ -1,209 +0,0 @@ -# Copyright 1999-2022 Gentoo Authors -# Distributed under the terms of the GNU General Public License v2 - -EAPI=8 -PYTHON_COMPAT=( python3_{8..10} ) - -inherit systemd distutils-r1 - -DESCRIPTION="Salt is a remote execution and configuration manager" -HOMEPAGE="https://www.saltstack.com/resources/community/ - https://github.com/saltstack" - -if [[ ${PV} == 9999* ]]; then - inherit git-r3 - EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" - EGIT_BRANCH="develop" - SRC_URI="" -else - SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz" - KEYWORDS="~amd64 ~arm ~arm64 ~riscv ~x86" -fi - -LICENSE="Apache-2.0" -SLOT="0" -IUSE="cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako - mongodb neutron nova openssl portage profile redis selinux test raet - +zeromq vim-syntax" - -RDEPEND=" - sys-apps/pciutils - >=dev-python/distro-1.5[${PYTHON_USEDEP}] - >=dev-python/jinja-3.0[${PYTHON_USEDEP}] - dev-python/libnacl[${PYTHON_USEDEP}] - >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] - >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] - >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] - dev-python/pyyaml[${PYTHON_USEDEP}] - dev-python/markupsafe[${PYTHON_USEDEP}] - >=dev-python/requests-1.0.0[${PYTHON_USEDEP}] - dev-python/setuptools[${PYTHON_USEDEP}] - >=dev-python/toml-0.10.2[${PYTHON_USEDEP}] - dev-python/watchdog[${PYTHON_USEDEP}] - libcloud? ( >=dev-python/libcloud-2.5.0[${PYTHON_USEDEP}] ) - mako? ( dev-python/mako[${PYTHON_USEDEP}] ) - ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) - libvirt? ( - $(python_gen_cond_dep 'dev-python/libvirt-python[${PYTHON_USEDEP}]' python3_8) - ) - openssl? ( - dev-libs/openssl:0=[-bindist(-)] - dev-python/pyopenssl[${PYTHON_USEDEP}] - ) - raet? ( - >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] - >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] - >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] - ) - cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) - cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) - genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) - mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) - portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) - keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) - redis? ( dev-python/redis-py[${PYTHON_USEDEP}] ) - selinux? ( sec-policy/selinux-salt ) - nova? ( - $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3_8) - ) - neutron? ( - $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3_8) - ) - gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) - profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) - vim-syntax? ( app-vim/salt-vim ) - zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) -" -BDEPEND=" - test? ( - ${RDEPEND} - >=dev-python/boto-2.32.1[${PYTHON_USEDEP}] - >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] - dev-python/mako[${PYTHON_USEDEP}] - >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] - >=dev-python/moto-0.3.6[${PYTHON_USEDEP}] - dev-python/passlib - dev-python/pip[${PYTHON_USEDEP}] - dev-python/pyopenssl[${PYTHON_USEDEP}] - dev-python/pytest[${PYTHON_USEDEP}] - >=dev-python/pytest-salt-factories-1.0.0_rc13[${PYTHON_USEDEP}] - dev-python/pytest-tempdir[${PYTHON_USEDEP}] - dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] - dev-python/pytest-subtests[${PYTHON_USEDEP}] - dev-python/flaky[${PYTHON_USEDEP}] - dev-python/libcloud[${PYTHON_USEDEP}] - net-dns/bind-tools - >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] - !x86? ( >=dev-python/boto3-1.17.67[${PYTHON_USEDEP}] ) - )" - -DOCS=( README.rst AUTHORS ) - -REQUIRED_USE="|| ( raet zeromq ) - test? ( cheetah genshi )" -RESTRICT="!test? ( test ) x86? ( test )" - -PATCHES=( - "${FILESDIR}/salt-3003-skip-tests-that-oom-machine.patch" - "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" - "${FILESDIR}/salt-3002-tests.patch" - "${FILESDIR}/salt-3003.1-tests.patch" - "${FILESDIR}/salt-3004.2-jinja-3.patch" - "${FILESDIR}/salt-3004.1-tests.patch" - "${FILESDIR}/salt-3004.1-relax-pyzmq-dep.patch" - "${FILESDIR}/salt-3004.1-py310.patch" - "${FILESDIR}/salt-3004.2-importlib.patch" - "${FILESDIR}/salt-3004.2-pyzmq-23.patch" -) - -python_prepare_all() { - # remove tests with external dependencies that may not be available, and - # tests that don't work in sandbox - rm tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py || die - rm tests/unit/modules/test_{file,boto_{vpc,secgroup,elb}}.py || die - rm tests/unit/states/test_boto_vpc.py || die - rm tests/support/gitfs.py tests/unit/runners/test_git_pillar.py || die - rm tests/pytests/functional/transport/server/test_req_channel.py || die - - # tests that require network access - rm tests/unit/{states,modules}/test_zcbuildout.py || die - rm -r tests/integration/cloud || die - rm -r tests/kitchen/tests/wordpress/tests || die - rm tests/kitchen/test_kitchen.py || die - rm tests/unit/modules/test_network.py || die - rm tests/pytests/functional/modules/test_pip.py || die - rm tests/pytests/unit/client/ssh/test_ssh.py || die - - # tests require root access - rm tests/integration/pillar/test_git_pillar.py || die - rm tests/integration/states/test_supervisord.py || die - - # make sure pkg_resources doesn't bomb because pycrypto isn't installed - find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die - # pycryptodome rather than pycryptodomex - find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die - - distutils-r1_python_prepare_all -} - -python_prepare() { - einfo "Fixing collections.abc warnings for ${EPYTHON}" - local abc - abc="$("${EPYTHON}" -c 'import collections.abc; print("|".join((c for c in dir(collections.abc) if not c.startswith("_"))))')" || die - find -name '*.py' -type f -print0 | xargs -0 sed -r -e "s:collections\\.(${abc}):collections.abc.\\1:g" -i || die - - # removes contextvars, see bug: https://bugs.gentoo.org/799431 - sed -i '/^contextvars/d' requirements/base.txt || die -} - -python_install_all() { - local svc - USE_SETUPTOOLS=1 distutils-r1_python_install_all - - for svc in minion master syndic api; do - newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} - newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} - systemd_dounit "${FILESDIR}"/salt-${svc}.service - done - - insinto /etc/${PN} - doins -r conf/* -} - -python_test() { - # testsuite likes lots of files - ulimit -n 4096 || die - - # ${T} is too long a path for the tests to work - local TMPDIR - TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" - ( - export TMPDIR - cleanup() { rm -rf "${TMPDIR}" || die; } - - trap cleanup EXIT - - addwrite "${TMPDIR}" - - USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ - "${EPYTHON}" -m pytest -vv \ - || die "testing failed with ${EPYTHON}" - ) -} - -pkg_postinst() { - if use python_targets_python3_8; then - if use nova; then - ewarn "Salt's nova functionality will not work with python3.8 since" - ewarn "dev-python/python-novaclient does not support it yet" - fi - if use neutron; then - ewarn "Salt's neutron functionality will not work with python3.8 since" - ewarn "dev-python/python-neutronclient does not support it yet" - fi - if use libvirt; then - ewarn "Salt's libvirt functionality will not work with python3.8 since" - ewarn "dev-python/libvirt-python does not support it yet" - fi - fi -} diff --git a/app-admin/salt/salt-3005.5-r1.ebuild b/app-admin/salt/salt-3005.5-r1.ebuild new file mode 100644 index 000000000000..835496219717 --- /dev/null +++ b/app-admin/salt/salt-3005.5-r1.ebuild @@ -0,0 +1,312 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_10 ) + +DISTUTILS_USE_PEP517=setuptools +inherit systemd distutils-r1 + +DESCRIPTION="Salt is a remote execution and configuration manager" +HOMEPAGE="https://www.saltstack.com/resources/community/ + https://github.com/saltstack" + +if [[ ${PV} == 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" + EGIT_BRANCH="develop" +else + inherit pypi + KEYWORDS="amd64 ~arm arm64 ~riscv x86" +fi + +LICENSE="Apache-2.0" +SLOT="0" +IUSE=" + cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako + mongodb neutron nova openssl portage profile redis selinux test raet + +zeromq vim-syntax +" + +RDEPEND=" + sys-apps/pciutils + >=dev-python/distro-1.5[${PYTHON_USEDEP}] + >=dev-python/jinja-3.1.2[${PYTHON_USEDEP}] + dev-python/jmespath[${PYTHON_USEDEP}] + dev-python/libnacl[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] + >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] + >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}] + >=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}] + >=dev-python/requests-2.31.0[${PYTHON_USEDEP}] + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/tomli[${PYTHON_USEDEP}] + dev-python/watchdog[${PYTHON_USEDEP}] + libcloud? ( + dev-python/aiohttp[${PYTHON_USEDEP}] + dev-python/aiosignal[${PYTHON_USEDEP}] + >=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}] + dev-python/async-timeout[${PYTHON_USEDEP}] + ) + mako? ( dev-python/mako[${PYTHON_USEDEP}] ) + ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) + libvirt? ( + dev-python/libvirt-python[${PYTHON_USEDEP}] + ) + openssl? ( + dev-libs/openssl:0=[-bindist(-)] + >=dev-python/pyopenssl-23.2.0[${PYTHON_USEDEP}] + ) + raet? ( + >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] + >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] + >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] + ) + cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) + cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) + genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) + mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) + portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) + keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) + redis? ( dev-python/redis[${PYTHON_USEDEP}] ) + selinux? ( sec-policy/selinux-salt ) + nova? ( + >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] + ) + neutron? ( + >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] + ) + gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) + profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) + vim-syntax? ( app-vim/salt-vim ) + zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) +" +BDEPEND=" + test? ( + ${RDEPEND} + dev-python/apache-libcloud[${PYTHON_USEDEP}] + >=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] + dev-python/mako[${PYTHON_USEDEP}] + >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] + >=dev-python/moto-2.0.0[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}] + >=dev-python/pytest-7.2.0[${PYTHON_USEDEP}] + >=dev-python/pytest-salt-factories-1.0.0_rc17[${PYTHON_USEDEP}] + dev-python/pytest-tempdir[${PYTHON_USEDEP}] + dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-shell-utilities[${PYTHON_USEDEP}] + dev-python/pytest-skip-markers[${PYTHON_USEDEP}] + dev-python/pytest-system-statistics[${PYTHON_USEDEP}] + dev-python/flaky[${PYTHON_USEDEP}] + net-dns/bind-tools + >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] + dev-util/yamllint[${PYTHON_USEDEP}] + !x86? ( >=dev-python/boto3-1.17.67[${PYTHON_USEDEP}] ) + ) +" + +DOCS=( README.rst AUTHORS ) + +REQUIRED_USE="|| ( raet zeromq ) + test? ( cheetah genshi )" +RESTRICT="!test? ( test ) x86? ( test )" + +PATCHES=( + "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" + "${FILESDIR}/salt-3002-tests.patch" + "${FILESDIR}/salt-3003.1-tests.patch" + "${FILESDIR}/salt-3005-tests.patch" + "${FILESDIR}/salt-3005.1-no-entry-points.patch" + "${FILESDIR}/salt-3005.1-importlib-metadata-5-r1.patch" + "${FILESDIR}/salt-3005.1-tests.patch" + "${FILESDIR}/salt-3005.1-modules-file-python-3.11-host.patch" + "${FILESDIR}/salt-3006.2-tests.patch" +) + +python_prepare_all() { + local -a remove_test_files=( + # remove tests with external dependencies that may not be available, and + # tests that don't work in sandbox + tests/pytests/functional/fileserver/test_roots.py + tests/pytests/functional/modules/file/test_readlink.py + tests/pytests/functional/modules/file/test_replace.py + tests/pytests/functional/modules/file/test_symlink.py + tests/pytests/functional/modules/state/requisites/test_mixed.py + tests/pytests/functional/modules/state/test_jinja_renderer.py + tests/pytests/functional/modules/state/test_state.py + tests/pytests/functional/pillar/test_top.py + tests/pytests/functional/runners/test_winrepo.py + tests/pytests/functional/transport/server/test_req_channel.py + tests/pytests/functional/utils/functools/test_namespaced_function.py + tests/pytests/functional/utils/test_async_event_publisher.py + tests/pytests/integration/modules/state/test_state.py + tests/pytests/integration/pillar/cache/test_pillar_cache.py + tests/pytests/integration/pillar/test_pillar_include.py + tests/pytests/integration/proxy/test_deltaproxy.py + tests/pytests/integration/returners/test_noop_return.py + tests/pytests/integration/runners/test_manage.py + tests/pytests/integration/utils/test_templates.py + tests/pytests/unit/loader/test_lazy.py + tests/pytests/unit/modules/state/test_top_file_merge.py + tests/pytests/unit/roster/test_dir.py + tests/pytests/unit/state/test_multi_env_highstate.py + tests/pytests/unit/state/test_state_highstate.py + tests/pytests/unit/states/file/test_keyvalue.py + tests/pytests/unit/utils/jinja/test_get_template.py + tests/pytests/unit/utils/jinja/test_salt_cache_loader.py + tests/pytests/unit/utils/test_cache.py + tests/pytests/unit/utils/test_versions.py + tests/support/gitfs.py + tests/unit/modules/test_boto_{vpc,secgroup,elb}.py + tests/unit/runners/test_git_pillar.py + tests/unit/states/test_boto_vpc.py + tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py + + # tests that require network access + tests/integration/cloud + tests/kitchen/test_kitchen.py + tests/kitchen/tests/wordpress/tests + tests/pytests/functional/cli/test_salt_cloud.py + tests/pytests/functional/modules/state/requisites/test_listen.py + tests/pytests/functional/modules/state/requisites/test_onchanges.py + tests/pytests/functional/modules/state/requisites/test_onfail.py + tests/pytests/functional/modules/state/requisites/test_prereq.py + tests/pytests/functional/modules/state/requisites/test_require.py + tests/pytests/functional/modules/state/requisites/test_unless.py + tests/pytests/functional/modules/state/requisites/test_use.py + tests/pytests/functional/modules/state/requisites/test_watch.py + tests/pytests/functional/modules/test_pip.py + tests/pytests/functional/pillar/test_gpg.py + tests/pytests/functional/states/file/test_comment.py + tests/pytests/functional/states/file/test_rename.py + tests/pytests/integration/cli/test_batch.py + tests/pytests/integration/cli/test_salt_deltaproxy.py + tests/pytests/integration/cli/test_salt_proxy.py + tests/pytests/integration/master/test_clear_funcs.py + tests/pytests/integration/modules/test_state.py + tests/pytests/integration/proxy/test_simple.py + tests/pytests/integration/runners/state/orchestrate/test_events.py + tests/pytests/integration/wheel/test_pillar_roots.py + tests/pytests/unit/client/ssh/test_ssh.py + tests/pytests/unit/cloud/test_map.py + tests/pytests/unit/fileserver/test_roots.py + tests/pytests/unit/modules/state/test_state.py + tests/pytests/unit/proxy/test_netmiko_px.py + tests/pytests/unit/test_client.py + tests/pytests/unit/test_ext_importers.py + tests/pytests/unit/test_master.py + tests/pytests/{integration,functional}/netapi tests/integration/netapi + tests/unit/cloud/clouds/test_joyent.py + tests/unit/config/schemas/test_ssh.py + tests/unit/modules/test_boto3_elasticsearch.py + tests/unit/modules/test_boto3_route53.py + tests/unit/modules/test_network.py + tests/unit/netapi/rest_tornado/test_saltnado.py + tests/unit/{states,modules}/test_zcbuildout.py + + # tests require root access + tests/integration/pillar/test_git_pillar.py + tests/integration/states/test_supervisord.py + ) + + rm -r "${remove_test_files[@]}" || die + + # axe the boto dep (bug #888235) + find "${S}/tests" -name 'test_boto_*.py' -delete || die + + # removes contextvars, see bug: https://bugs.gentoo.org/799431 + sed -i '/^contextvars/d' requirements/base.txt || die + + # called_once should be assert_called_once_with + find "${S}/tests" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:[.]called_once:.assert_called_once:g' -- || die + + distutils-r1_python_prepare_all +} + +python_install_all() { + local svc + USE_SETUPTOOLS=1 distutils-r1_python_install_all + + for svc in minion master syndic api; do + newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} + newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} + systemd_dounit "${FILESDIR}"/salt-${svc}.service + done + + insinto /etc/${PN} + doins -r conf/* +} + +python_test() { + local -a EPYTEST_DESELECT=( + # hangs indefinitely + tests/pytests/unit/test_minion.py::test_master_type_disable + # don't like sandbox + tests/pytests/functional/modules/test_saltutil.py::test__get_top_file_envs + tests/pytests/functional/modules/state/requisites/test_onlyif.py::test_onlyif_req_retcode + tests/pytests/integration/modules/test_state.py::test_logging_and_state_output_order + tests/pytests/integration/states/test_ini_manage.py::test_options_present + + tests/pytests/functional/cli/test_salt.py::test_versions_report + tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_dpkg_lock + tests/pytests/unit/test_master.py::test_fileserver_duration + tests/pytests/unit/utils/test_vt.py::test_log_sanitize + tests/unit/utils/test_schema.py::ConfigTestCase::test_anyof_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_dict_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_hostname_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_not_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_oneof_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_optional_requirements_config_validation + tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_shiftjis + tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_unicode + + # need root + tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group + ) + + # https://bugs.gentoo.org/924377 + has_version 'sys-apps/systemd' || EPYTEST_DESELECT+=( + tests/pytests/unit/modules/test_aptpkg.py::test_autoremove + tests/pytests/unit/modules/test_aptpkg.py::test_upgrade + tests/pytests/unit/modules/test_aptpkg.py::test_upgrade_downloadonly + tests/pytests/unit/modules/test_aptpkg.py::test_upgrade_allow_downgrades + tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_default + tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_with_kwargs + tests/pytests/unit/modules/test_linux_sysctl.py::test_persist_no_conf_failure + tests/pytests/unit/modules/test_yumpkg.py::test_latest_version_with_options + tests/pytests/unit/modules/test_yumpkg.py::test_list_repo_pkgs_with_options + tests/pytests/unit/modules/test_yumpkg.py::test_list_upgrades_dnf + tests/pytests/unit/modules/test_yumpkg.py::test_list_upgrades_yum + tests/pytests/unit/modules/test_yumpkg.py::test_refresh_db_with_options + tests/pytests/unit/modules/test_yumpkg.py::test_call_yum_default + tests/pytests/unit/modules/test_yumpkg.py::test_call_yum_with_kwargs + tests/unit/modules/test_kernelpkg_linux_yum.py::YumKernelPkgTestCase::test_remove_error + tests/unit/modules/test_kernelpkg_linux_yum.py::YumKernelPkgTestCase::test_remove_success + tests/unit/modules/test_zypperpkg.py::ZypperTestCase::test_remove_purge + ) + + # testsuite likes lots of files + ulimit -n 4096 || die + + # ${T} is too long a path for the tests to work + local TMPDIR + TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" || die + ( + export TMPDIR + cleanup() { rm -rf "${TMPDIR}" || die; } + + trap cleanup EXIT + + addwrite "${TMPDIR}" + + USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ + epytest + ) +} diff --git a/app-admin/salt/salt-3006.5-r1.ebuild b/app-admin/salt/salt-3006.5-r1.ebuild new file mode 100644 index 000000000000..42a1f42b6498 --- /dev/null +++ b/app-admin/salt/salt-3006.5-r1.ebuild @@ -0,0 +1,342 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_10 ) + +DISTUTILS_USE_PEP517=setuptools +inherit systemd distutils-r1 + +DESCRIPTION="Salt is a remote execution and configuration manager" +HOMEPAGE="https://www.saltstack.com/resources/community/ + https://github.com/saltstack" + +if [[ ${PV} == 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" + EGIT_BRANCH="develop" +else + inherit pypi + KEYWORDS="~amd64 ~riscv ~x86" +fi + +LICENSE="Apache-2.0" +SLOT="0" +IUSE=" + cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako + mongodb neutron nova openssl portage profile redis selinux test raet + +zeromq vim-syntax +" + +RDEPEND=" + sys-apps/pciutils + >=dev-python/cryptography-41.0.3[${PYTHON_USEDEP}] + >=dev-python/distro-1.5[${PYTHON_USEDEP}] + >=dev-python/jinja-3.1.2[${PYTHON_USEDEP}] + dev-python/jmespath[${PYTHON_USEDEP}] + dev-python/libnacl[${PYTHON_USEDEP}] + dev-python/looseversion[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] + >=dev-python/packaging-21.3[${PYTHON_USEDEP}] + >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] + >=dev-python/pycryptodome-3.9.8[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}] + >=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}] + >=dev-python/requests-2.31.0[${PYTHON_USEDEP}] + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/tomli[${PYTHON_USEDEP}] + dev-python/watchdog[${PYTHON_USEDEP}] + libcloud? ( + dev-python/aiohttp[${PYTHON_USEDEP}] + dev-python/aiosignal[${PYTHON_USEDEP}] + >=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}] + dev-python/async-timeout[${PYTHON_USEDEP}] + ) + mako? ( dev-python/mako[${PYTHON_USEDEP}] ) + ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) + libvirt? ( + dev-python/libvirt-python[${PYTHON_USEDEP}] + ) + openssl? ( + dev-libs/openssl:0=[-bindist(-)] + >=dev-python/pyopenssl-23.2.0[${PYTHON_USEDEP}] + ) + raet? ( + >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] + >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] + >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] + ) + cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) + cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) + genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) + mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) + portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) + keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) + redis? ( dev-python/redis[${PYTHON_USEDEP}] ) + selinux? ( sec-policy/selinux-salt ) + nova? ( + >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] + ) + neutron? ( + >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] + ) + gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) + profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) + vim-syntax? ( app-vim/salt-vim ) + zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) +" +BDEPEND=" + dev-python/build[${PYTHON_USEDEP}] + test? ( + ${RDEPEND} + dev-python/apache-libcloud[${PYTHON_USEDEP}] + dev-python/boto3[${PYTHON_USEDEP}] + >=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] + dev-python/mako[${PYTHON_USEDEP}] + >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] + >=dev-python/moto-2.0.0[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/bcrypt[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}] + >=dev-python/pytest-7.2.0[${PYTHON_USEDEP}] + >=dev-python/pytest-salt-factories-1.0.0_rc28[${PYTHON_USEDEP}] + dev-python/pytest-tempdir[${PYTHON_USEDEP}] + dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-shell-utilities[${PYTHON_USEDEP}] + dev-python/pytest-skip-markers[${PYTHON_USEDEP}] + dev-python/pytest-system-statistics[${PYTHON_USEDEP}] + dev-python/pytest-custom-exit-code[${PYTHON_USEDEP}] + dev-python/flaky[${PYTHON_USEDEP}] + net-dns/bind-tools + >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] + dev-util/yamllint[${PYTHON_USEDEP}] + !x86? ( >=dev-python/boto3-1.21.46[${PYTHON_USEDEP}] ) + ) +" + +DOCS=( README.rst AUTHORS ) + +REQUIRED_USE="|| ( raet zeromq ) + test? ( cheetah genshi )" +RESTRICT="!test? ( test ) x86? ( test )" + +PATCHES=( + "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" + "${FILESDIR}/salt-3005.1-no-entry-points.patch" +) + +python_prepare_all() { + local -a remove_test_files=( + # remove tests with external dependencies that may not be available, and + # tests that don't work in sandbox + tests/pytests/functional/modules/file/test_readlink.py + tests/pytests/functional/modules/file/test_symlink.py + tests/pytests/functional/modules/state/test_jinja_filters.py + tests/pytests/functional/modules/state/test_jinja_renderer.py + tests/pytests/functional/modules/state/test_mako_renderer.py + tests/pytests/functional/modules/state/test_pyobjects_renderer.py + tests/pytests/functional/pillar/test_gpg.py + tests/pytests/functional/runners/test_winrepo.py + tests/pytests/functional/states/file/test_keyvalue.py + tests/pytests/functional/states/file/test_patch.py + tests/pytests/functional/transport/server/test_req_channel.py + tests/pytests/functional/utils/test_async_event_publisher.py + tests/pytests/integration/master/test_clear_funcs.py + tests/pytests/integration/minion/test_reauth.py + tests/pytests/integration/returners/test_noop_return.py + tests/pytests/integration/runners/test_manage.py + tests/pytests/integration/states/test_ini_manage.py + tests/pytests/integration/states/test_state_test.py + tests/pytests/integration/utils/test_templates.py + tests/pytests/unit/loader/test_lazy.py + tests/pytests/unit/modules/test_aptpkg.py + tests/pytests/unit/roster/test_dir.py + tests/pytests/unit/states/file/test_keyvalue.py + tests/pytests/unit/utils/jinja/test_get_template.py + tests/pytests/unit/utils/jinja/test_salt_cache_loader.py + tests/unit/modules/test_boto_{vpc,secgroup,elb}.py + tests/unit/netapi/rest_tornado/test_saltnado.py + tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py + + # tests that require network access + tests/integration/cloud + tests/integration/netapi + tests/kitchen/test_kitchen.py + tests/kitchen/tests/wordpress/tests + tests/pytests/functional/cli/test_salt_cloud.py + tests/pytests/functional/cli/test_salt_run_.py + tests/pytests/functional/modules/test_http.py + tests/pytests/functional/modules/test_pip.py + tests/pytests/integration/cli/test_salt_proxy.py + tests/pytests/integration/modules/state/test_state.py + tests/pytests/integration/modules/state/test_state_state_events.py + tests/pytests/integration/modules/test_jinja.py + tests/pytests/integration/modules/test_state.py + tests/pytests/integration/modules/test_test.py + tests/pytests/integration/pillar/cache/test_pillar_cache.py + tests/pytests/integration/pillar/test_pillar_include.py + tests/pytests/integration/proxy/test_simple.py + tests/pytests/integration/runners/state/orchestrate/test_events.py + tests/pytests/integration/wheel/test_pillar_roots.py + tests/pytests/unit/client/ssh/test_ssh.py + tests/pytests/unit/test_client.py + tests/pytests/{integration,functional}/netapi + tests/unit/modules/test_boto3_elasticsearch.py + tests/unit/modules/test_boto3_route53.py + tests/unit/modules/test_network.py + tests/unit/{states,modules}/test_zcbuildout.py + + # tests require root access + tests/integration/pillar/test_git_pillar.py + tests/integration/states/test_supervisord.py + tests/pytests/functional/states/file/test_accumulated.py + tests/pytests/scenarios/performance/test_performance.py + tests/pytests/unit/cloud/test_map.py + tests/pytests/unit/modules/state/test_state.py + tests/pytests/unit/modules/state/test_top_file_merge.py + tests/pytests/unit/proxy/test_netmiko_px.py + tests/pytests/unit/proxy/test_ssh_sample.py + tests/pytests/unit/roster/test_sshknownhosts.py + ) + + rm -r "${remove_test_files[@]}" || die + + # axe the boto dep (bug #888235) + find "${S}/tests" -name 'test_boto_*.py' -delete || die + + # removes contextvars, see bug: https://bugs.gentoo.org/799431 + sed -i '/^contextvars/d' requirements/base.txt || die + + # make sure pkg_resources doesn't bomb because pycrypto isn't installed + find "${S}" -name '*.txt' -print0 | xargs -0 sed -e '/pycrypto>/ d ; /pycryptodomex/ d' -i || die + # pycryptodome rather than pycryptodomex + find "${S}" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:Cryptodome:Crypto:g' -- || die + + # called_once should be assert_called_once_with + find "${S}/tests" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:[.]called_once:.assert_called_once:g' -- || die + + distutils-r1_python_prepare_all +} + +python_install_all() { + local svc + USE_SETUPTOOLS=1 distutils-r1_python_install_all + + for svc in minion master syndic api; do + newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} + newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} + systemd_dounit "${FILESDIR}"/salt-${svc}.service + done + + insinto /etc/${PN} + doins -r conf/* +} + +python_test() { + local -a EPYTEST_DESELECT=( + # doesn't like the distutils warning + tests/pytests/integration/cli/test_batch.py::test_batch_retcode + tests/pytests/integration/cli/test_batch.py::test_multiple_modules_in_batch + + # hangs indefinitely + tests/pytests/unit/test_minion.py::test_master_type_disable + + # needs root + tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group + tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config + tests/pytests/integration/modules/test_cmdmod.py::test_long_stdout + + # don't like sandbox + tests/pytests/functional/cli/test_salt.py::test_help_log + tests/pytests/functional/cli/test_salt.py::test_versions_report + tests/pytests/functional/fileserver/test_roots.py::test_symlink_list + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_content + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_empty_file + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_append_on_match + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_newline + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_no_newline + tests/pytests/functional/modules/test_defaults.py::test_defaults_get + tests/pytests/functional/pillar/test_top.py::test_pillar_top_compound_match + tests/pytests/functional/states/file/test_append.py::test_file_append_check_cmd + tests/pytests/functional/states/file/test_blockreplace.py::test_issue_49043 + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in_with_id + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_with_name + tests/pytests/functional/states/file/test_managed.py::test_file_managed_requisites + tests/pytests/functional/states/file/test_managed.py::test_issue_8947_utf8_sls + tests/pytests/functional/states/file/test_managed.py::test_managed_escaped_file_path + tests/pytests/functional/states/file/test_managed.py::test_managed_file_issue_51208 + tests/pytests/functional/states/file/test_managed.py::test_managed_file_with_grains_data + tests/pytests/functional/states/file/test_managed.py::test_managed_latin1_diff + tests/pytests/functional/states/file/test_managed.py::test_managed_source_hash_indifferent_case + tests/pytests/functional/states/file/test_managed.py::test_managed_unicode_jinja_with_tojson_filter + tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source[False] + tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source[True] + tests/pytests/functional/states/file/test_recurse.py::test_issue_2726_mode_kwarg + tests/pytests/functional/states/file/test_replace.py::test_file_replace_check_cmd + tests/pytests/functional/states/file/test_replace.py::test_file_replace_prerequired_issues_55775 + tests/pytests/functional/utils/functools/test_namespaced_function.py::test_namespacing + tests/pytests/integration/ssh/test_pillar_compilation.py::test_gpg_pillar + tests/pytests/integration/ssh/test_pillar_compilation.py::test_saltutil_runner + tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py::test_deferred_write_on_flush + tests/pytests/unit/_logging/handlers/test_deferred_stream_handler.py::test_sync_with_handlers + tests/pytests/unit/client/ssh/test_single.py::test_run_with_pre_flight_args + tests/pytests/unit/config/schemas/test_ssh.py::test_config_validate + tests/pytests/unit/modules/test_aptpkg.py::test_call_apt_dpkg_lock + tests/pytests/unit/modules/test_msteams.py::test_post_card + tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config + tests/pytests/unit/modules/test_saltutil.py::test_clear_job_cache + tests/pytests/unit/modules/test_saltutil.py::test_list_extmods + tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config + tests/pytests/unit/pillar/test_pillar.py::test_pillar_get_cache_disk + tests/pytests/unit/renderers/test_yamlex.py::test_basic + tests/pytests/unit/renderers/test_yamlex.py::test_complex + tests/pytests/unit/states/test_file.py::test_file_recurse_directory_test + tests/pytests/unit/test_ext_importers.py::test_tornado_import_override + tests/pytests/unit/test_master.py::test_fileserver_duration + tests/pytests/unit/test_template.py::test_compile_template_str_mkstemp_cleanup + tests/pytests/unit/utils/test_cache.py::test_context_wrapper + tests/pytests/unit/utils/test_cache.py::test_refill_cache + tests/pytests/unit/utils/test_cache.py::test_set_cache + tests/pytests/unit/utils/test_http.py::test_requests_session_verify_ssl_false + tests/pytests/unit/utils/test_vt.py::test_log_sanitize + tests/unit/utils/test_schema.py::ConfigTestCase::test_anyof_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_array_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_dict_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_hostname_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_not_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_oneof_config_validation + tests/unit/utils/test_schema.py::ConfigTestCase::test_optional_requirements_config_validation + tests/unit/utils/test_vt.py::test_split_multibyte_characters_shiftjis + tests/unit/utils/test_vt.py::test_split_multibyte_characters_unicode + + # tests that need network access + tests/pytests/unit/utils/test_http.py::test_query_proxy + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_false + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_true + tests/pytests/unit/utils/test_network.py::test_isportopen + ) + + # testsuite likes lots of files + ulimit -n 4096 || die + + # ${T} is too long a path for the tests to work + local TMPDIR + TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" || die + ( + export TMPDIR + cleanup() { rm -rf "${TMPDIR}" || die; } + + trap cleanup EXIT + + addwrite "${TMPDIR}" + + USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ + epytest + ) +} diff --git a/app-admin/salt/salt-3006.7-r1.ebuild b/app-admin/salt/salt-3006.7-r1.ebuild new file mode 100644 index 000000000000..6536ba08a015 --- /dev/null +++ b/app-admin/salt/salt-3006.7-r1.ebuild @@ -0,0 +1,358 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_1{0..1} ) + +DISTUTILS_USE_PEP517=setuptools +inherit systemd distutils-r1 + +DESCRIPTION="Salt is a remote execution and configuration manager" +HOMEPAGE="https://www.saltstack.com/resources/community/ + https://github.com/saltstack" + +if [[ ${PV} == 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" + EGIT_BRANCH="develop" +else + inherit pypi + KEYWORDS="amd64 ~riscv ~x86" +fi + +LICENSE="Apache-2.0" +SLOT="0" +IUSE=" + cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako + mongodb neutron nova openssl portage profile redis selinux test raet + +zeromq vim-syntax +" + +RDEPEND=" + sys-apps/pciutils + >=dev-python/cryptography-41.0.3[${PYTHON_USEDEP}] + >=dev-python/distro-1.5[${PYTHON_USEDEP}] + >=dev-python/jinja-3.1.3[${PYTHON_USEDEP}] + dev-python/jmespath[${PYTHON_USEDEP}] + dev-python/libnacl[${PYTHON_USEDEP}] + dev-python/looseversion[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] + >=dev-python/packaging-21.3[${PYTHON_USEDEP}] + >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] + >=dev-python/pycryptodome-3.19.1[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}] + >=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}] + >=dev-python/requests-2.31.0[${PYTHON_USEDEP}] + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/tomli[${PYTHON_USEDEP}] + dev-python/watchdog[${PYTHON_USEDEP}] + libcloud? ( + dev-python/aiohttp[${PYTHON_USEDEP}] + dev-python/aiosignal[${PYTHON_USEDEP}] + >=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}] + dev-python/async-timeout[${PYTHON_USEDEP}] + ) + mako? ( dev-python/mako[${PYTHON_USEDEP}] ) + ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) + libvirt? ( + dev-python/libvirt-python[${PYTHON_USEDEP}] + ) + openssl? ( + dev-libs/openssl:0=[-bindist(-)] + >=dev-python/pyopenssl-23.2.0[${PYTHON_USEDEP}] + ) + raet? ( + >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] + >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] + >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] + ) + cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] ) + cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) + genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) + mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) + portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) + keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) + redis? ( dev-python/redis[${PYTHON_USEDEP}] ) + selinux? ( sec-policy/selinux-salt ) + nova? ( + >=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}] + ) + neutron? ( + >=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}] + ) + gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) + profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) + vim-syntax? ( app-vim/salt-vim ) + zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) +" +BDEPEND=" + dev-python/build[${PYTHON_USEDEP}] + test? ( + ${RDEPEND} + app-arch/zip + dev-python/apache-libcloud[${PYTHON_USEDEP}] + dev-python/boto3[${PYTHON_USEDEP}] + >=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] + dev-python/mako[${PYTHON_USEDEP}] + >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] + >=dev-python/moto-2.0.0[${PYTHON_USEDEP}] + <dev-python/moto-5[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/bcrypt[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}] + >=dev-python/pytest-7.2.0[${PYTHON_USEDEP}] + >=dev-python/pytest-salt-factories-1.0.0_rc28[${PYTHON_USEDEP}] + dev-python/pytest-tempdir[${PYTHON_USEDEP}] + dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-shell-utilities[${PYTHON_USEDEP}] + dev-python/pytest-skip-markers[${PYTHON_USEDEP}] + dev-python/pytest-system-statistics[${PYTHON_USEDEP}] + dev-python/pytest-custom-exit-code[${PYTHON_USEDEP}] + dev-python/flaky[${PYTHON_USEDEP}] + net-dns/bind-tools + >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] + dev-util/yamllint[${PYTHON_USEDEP}] + !x86? ( >=dev-python/boto3-1.21.46[${PYTHON_USEDEP}] ) + ) +" + +DOCS=( README.rst AUTHORS ) + +REQUIRED_USE="|| ( raet zeromq ) + test? ( cheetah genshi )" +RESTRICT="!test? ( test ) x86? ( test )" + +PATCHES=( + "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" + "${FILESDIR}/salt-3005.1-no-entry-points.patch" +) + +python_prepare_all() { + local -a remove_test_files=( + # remove tests with external dependencies that may not be available, and + # tests that don't work in sandbox + tests/pytests/functional/modules/file/test_readlink.py + tests/pytests/functional/modules/file/test_symlink.py + tests/pytests/functional/modules/state/test_jinja_filters.py + tests/pytests/functional/modules/state/test_jinja_renderer.py + tests/pytests/functional/modules/state/test_mako_renderer.py + tests/pytests/functional/modules/state/test_pyobjects_renderer.py + tests/pytests/functional/pillar/test_gpg.py + tests/pytests/functional/runners/test_winrepo.py + tests/pytests/functional/states/file/test_keyvalue.py + tests/pytests/functional/states/file/test_patch.py + tests/pytests/functional/transport/server/test_req_channel.py + tests/pytests/functional/utils/test_async_event_publisher.py + tests/pytests/integration/master/test_clear_funcs.py + tests/pytests/integration/minion/test_reauth.py + tests/pytests/integration/modules/test_cmdmod.py + tests/pytests/integration/modules/test_jinja.py + tests/pytests/integration/returners/test_noop_return.py + tests/pytests/integration/runners/test_manage.py + tests/pytests/integration/ssh/test_pillar_compilation.py + tests/pytests/integration/states/test_ini_manage.py + tests/pytests/integration/states/test_state_test.py + tests/pytests/integration/utils/test_templates.py + tests/pytests/pkg/integration/test_check_imports.py + tests/pytests/pkg/integration/test_clean_zmq_teardown.py + tests/pytests/pkg/integration/test_enabled_disabled.py + tests/pytests/pkg/integration/test_help.py + tests/pytests/pkg/integration/test_logrotate_config.py + tests/pytests/pkg/integration/test_pkg.py + tests/pytests/pkg/integration/test_python.py + tests/pytests/unit/loader/test_lazy.py + tests/pytests/unit/renderers/test_yamlex.py + tests/pytests/unit/roster/test_dir.py + tests/pytests/unit/states/file/test_keyvalue.py + tests/pytests/unit/utils/jinja/test_get_template.py + tests/pytests/unit/utils/jinja/test_salt_cache_loader.py + tests/pytests/unit/utils/test_cache.py + tests/pytests/unit/utils/test_versions.py + tests/unit/modules/test_boto_{vpc,secgroup,elb}.py + tests/unit/netapi/rest_tornado/test_saltnado.py + tests/unit/states/test_boto_vpc.py + tests/unit/states/test_module.py + tests/unit/utils/test_schema.py + tests/unit/{test_{zypp_plugins,module_names},utils/test_extend}.py + + # tests that require network access + tests/integration/cloud + tests/kitchen/test_kitchen.py + tests/kitchen/tests/wordpress/tests + tests/pytests/functional/cli/test_salt_cloud.py + tests/pytests/functional/cli/test_salt_run_.py + tests/pytests/functional/modules/test_http.py + tests/pytests/functional/modules/test_pip.py + tests/pytests/integration/cli/test_salt_proxy.py + tests/pytests/integration/modules/state/test_state.py + tests/pytests/integration/modules/state/test_state_state_events.py + tests/pytests/integration/pillar/cache/test_pillar_cache.py + tests/pytests/integration/pillar/test_pillar_include.py + tests/pytests/integration/proxy/test_simple.py + tests/pytests/integration/runners/state/orchestrate/test_events.py + tests/pytests/integration/wheel/test_pillar_roots.py + tests/pytests/pkg/downgrade/test_salt_downgrade.py + tests/pytests/pkg/integration/test_pip.py + tests/pytests/pkg/integration/test_pip_upgrade.py + tests/pytests/pkg/integration/test_salt_api.py + tests/pytests/pkg/integration/test_salt_call.py + tests/pytests/pkg/integration/test_salt_exec.py + tests/pytests/pkg/integration/test_salt_grains.py + tests/pytests/pkg/integration/test_salt_key.py + tests/pytests/pkg/integration/test_salt_minion.py + tests/pytests/pkg/integration/test_salt_output.py + tests/pytests/pkg/integration/test_salt_pillar.py + tests/pytests/pkg/integration/test_salt_state_file.py + tests/pytests/pkg/integration/test_salt_ufw.py + tests/pytests/pkg/integration/test_salt_user.py + tests/pytests/pkg/integration/test_systemd_config.py + tests/pytests/pkg/integration/test_version.py + tests/pytests/pkg/upgrade/test_salt_upgrade.py + tests/pytests/unit/client/ssh/test_ssh.py + tests/pytests/unit/loader/test_loading_modules.py + tests/pytests/unit/test_client.py + tests/pytests/unit/utils/test_aws.py + tests/pytests/unit/utils/test_http.py + tests/pytests/{integration,functional}/netapi tests/integration/netapi + tests/unit/modules/test_boto3_elasticsearch.py + tests/unit/modules/test_boto3_route53.py + tests/unit/modules/test_network.py + tests/unit/{states,modules}/test_zcbuildout.py + + # tests require root access + tests/integration/pillar/test_git_pillar.py + tests/integration/states/test_supervisord.py + tests/pytests/functional/cli/test_salt.py + tests/pytests/functional/states/file/test_accumulated.py + tests/pytests/scenarios/performance/test_performance.py + tests/pytests/unit/cloud/test_map.py + tests/pytests/unit/modules/state/test_state.py + tests/pytests/unit/modules/state/test_top_file_merge.py + tests/pytests/unit/proxy/test_netmiko_px.py + tests/pytests/unit/proxy/test_ssh_sample.py + tests/pytests/unit/roster/test_sshknownhosts.py + ) + + rm -r "${remove_test_files[@]}" || die + + # axe the boto dep (bug #888235) + find "${S}/tests" -name 'test_boto_*.py' -delete || die + + # removes contextvars, see bug: https://bugs.gentoo.org/799431 + sed -i '/^contextvars/d' requirements/base.txt || die + + # called_once should be assert_called_once_with + find "${S}/tests" -name '*.py' -print0 | xargs -0 -- sed -i -e 's:[.]called_once:.assert_called_once:g' -- || die + + distutils-r1_python_prepare_all +} + +python_install_all() { + local svc + USE_SETUPTOOLS=1 distutils-r1_python_install_all + + for svc in minion master syndic api; do + newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} + newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} + systemd_dounit "${FILESDIR}"/salt-${svc}.service + done + + insinto /etc/${PN} + doins -r conf/* +} + +python_test() { + local -a EPYTEST_DESELECT=( + # doesn't like the distutils warning + tests/pytests/integration/cli/test_batch.py::test_batch_retcode + tests/pytests/integration/cli/test_batch.py::test_multiple_modules_in_batch + + # hangs indefinitely + tests/pytests/unit/test_minion.py::test_master_type_disable + + # needs root + tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group + tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config + + # don't like sandbox + tests/pytests/functional/fileserver/test_roots.py::test_symlink_list + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_content + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_empty_file + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_append_on_match + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_newline + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_no_newline + tests/pytests/functional/modules/test_defaults.py::test_defaults_get + tests/pytests/functional/pillar/test_top.py::test_pillar_top_compound_match + tests/pytests/functional/states/file/test_append.py::test_file_append_check_cmd + tests/pytests/functional/states/file/test_blockreplace.py::test_issue_49043 + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in_with_id + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_with_name + tests/pytests/functional/states/file/test_managed.py::test_file_managed_requisites + tests/pytests/functional/states/file/test_managed.py::test_issue_8947_utf8_sls + tests/pytests/functional/states/file/test_managed.py::test_managed_escaped_file_path + tests/pytests/functional/states/file/test_managed.py::test_managed_file_issue_51208 + tests/pytests/functional/states/file/test_managed.py::test_managed_file_with_grains_data + tests/pytests/functional/states/file/test_managed.py::test_managed_latin1_diff + tests/pytests/functional/states/file/test_managed.py::test_managed_source_hash_indifferent_case + tests/pytests/functional/states/file/test_managed.py::test_managed_unicode_jinja_with_tojson_filter + tests/pytests/functional/states/file/test_recurse.py::test_issue_2726_mode_kwarg + tests/pytests/functional/states/file/test_replace.py::test_file_replace_check_cmd + tests/pytests/functional/states/file/test_replace.py::test_file_replace_prerequired_issues_55775 + tests/pytests/functional/utils/functools/test_namespaced_function.py::test_namespacing + tests/pytests/integration/modules/test_state.py::test_logging_and_state_output_order + tests/pytests/integration/modules/test_test.py::test_deprecation_warning_emits_deprecation_warnings + tests/pytests/unit/config/schemas/test_ssh.py::test_config_validate + tests/pytests/unit/grains/test_core.py::test_get_machine_id + tests/pytests/unit/loader/test_loader.py::test_named_loader_context_name_not_packed + tests/pytests/unit/modules/test_saltutil.py::test_clear_job_cache + tests/pytests/unit/modules/test_saltutil.py::test_list_extmods + tests/pytests/unit/pillar/test_pillar.py::test_pillar_get_cache_disk + tests/pytests/unit/state/test_state_compiler.py::test_verify_high_too_many_functions_declared_error_message + tests/pytests/unit/test_ext_importers.py::test_tornado_import_override + tests/pytests/unit/utils/test_rsax931.py::test_find_libcrypto_darwin_catalina + tests/pytests/unit/utils/test_versions.py::test_warn_until_good_version_argument + tests/unit/transport/test_ipc.py::IPCMessagePubSubCase::test_async_reading_streamclosederror + + # tests that need network access + tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source + tests/pytests/unit/test_ext_importers.py::test_tornado_import_override + tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_multiple_comps + tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_architectures + tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config + tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config_value_none + tests/pytests/unit/utils/test_http.py::test_query_proxy + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_false + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_true + tests/pytests/unit/utils/test_network.py::test_isportopen + ) + [[ ${EPYTHON#*.} -ge 11 ]] && EPYTEST_DESELECT+=( + tests/unit/test_master.py::TransportMethodsTest::test_aes_funcs_black + tests/unit/test_master.py::TransportMethodsTest::test_clear_funcs_black + ) + [[ ${EPYTHON#*.} -ge 12 ]] && EPYTEST_DESELECT+=( + tests/integration/modules/test_hosts.py::HostsModuleTest::test_set_host + ) + + # testsuite likes lots of files + ulimit -n 4096 || die + + # ${T} is too long a path for the tests to work + local TMPDIR + TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" || die + ( + export TMPDIR + cleanup() { rm -rf "${TMPDIR}" || die; } + + trap cleanup EXIT + + addwrite "${TMPDIR}" + + USE_SETUPTOOLS=1 NO_INTERNET=1 SHELL="/bin/bash" \ + epytest + ) +} diff --git a/app-admin/salt/salt-3007.0-r1.ebuild b/app-admin/salt/salt-3007.0-r1.ebuild new file mode 100644 index 000000000000..13e5222fc45f --- /dev/null +++ b/app-admin/salt/salt-3007.0-r1.ebuild @@ -0,0 +1,610 @@ +# Copyright 1999-2024 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=8 +PYTHON_COMPAT=( python3_1{0..2} ) + +DISTUTILS_USE_PEP517=setuptools +inherit systemd distutils-r1 + +DESCRIPTION="Salt is a remote execution and configuration manager" +HOMEPAGE="https://www.saltstack.com/resources/community/ + https://github.com/saltstack" + +if [[ ${PV} == 9999* ]]; then + inherit git-r3 + EGIT_REPO_URI="https://github.com/${PN}stack/${PN}.git" + EGIT_BRANCH="develop" +else + inherit pypi + KEYWORDS="amd64 ~riscv ~x86" +fi + +LICENSE="Apache-2.0" +SLOT="0" +IUSE=" + cheetah cherrypy ldap libcloud libvirt genshi gnupg keyring mako + mongodb neutron nova portage profile redis selinux test raet + +zeromq vim-syntax +" + +RDEPEND=" + sys-apps/pciutils + dev-libs/openssl:0=[-bindist(-)] + dev-python/aiohttp[${PYTHON_USEDEP}] + >=dev-python/cherrypy-18.6.1[${PYTHON_USEDEP}] + >=dev-python/cryptography-42.0.0[${PYTHON_USEDEP}] + >=dev-python/distro-1.5[${PYTHON_USEDEP}] + dev-python/importlib-metadata[${PYTHON_USEDEP}] + >=dev-python/jinja-3.1.3[${PYTHON_USEDEP}] + dev-python/jmespath[${PYTHON_USEDEP}] + dev-python/libnacl[${PYTHON_USEDEP}] + dev-python/looseversion[${PYTHON_USEDEP}] + >=dev-python/msgpack-1.0.0[${PYTHON_USEDEP}] + >=dev-python/packaging-21.3[${PYTHON_USEDEP}] + >=dev-python/psutil-5.0.0[${PYTHON_USEDEP}] + >=dev-python/pycryptodome-3.19.1[${PYTHON_USEDEP}] + >=dev-python/pyopenssl-24.0.0[${PYTHON_USEDEP}] + >=dev-python/python-dateutil-2.8.1[${PYTHON_USEDEP}] + dev-python/python-gnupg[${PYTHON_USEDEP}] + >=dev-python/pyyaml-6.0.1[${PYTHON_USEDEP}] + >=dev-python/markupsafe-2.1.2[${PYTHON_USEDEP}] + >=dev-python/requests-2.31.0[${PYTHON_USEDEP}] + dev-python/setproctitle[${PYTHON_USEDEP}] + dev-python/setuptools[${PYTHON_USEDEP}] + dev-python/tomli[${PYTHON_USEDEP}] + dev-python/tornado[${PYTHON_USEDEP}] + dev-python/watchdog[${PYTHON_USEDEP}] + libcloud? ( + >=dev-python/aiohttp-3.9.0[${PYTHON_USEDEP}] + dev-python/aiosignal[${PYTHON_USEDEP}] + >=dev-python/apache-libcloud-2.5.0[${PYTHON_USEDEP}] + dev-python/async-timeout[${PYTHON_USEDEP}] + ) + mako? ( dev-python/mako[${PYTHON_USEDEP}] ) + ldap? ( dev-python/python-ldap[${PYTHON_USEDEP}] ) + libvirt? ( + dev-python/libvirt-python[${PYTHON_USEDEP}] + ) + raet? ( + >=dev-python/libnacl-1.0.0[${PYTHON_USEDEP}] + >=dev-python/ioflo-1.1.7[${PYTHON_USEDEP}] + >=dev-python/raet-0.6.0[${PYTHON_USEDEP}] + ) + cheetah? ( >=dev-python/cheetah3-3.2.2[${PYTHON_USEDEP}] ) + genshi? ( dev-python/genshi[${PYTHON_USEDEP}] ) + mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] ) + portage? ( sys-apps/portage[${PYTHON_USEDEP}] ) + keyring? ( dev-python/keyring[${PYTHON_USEDEP}] ) + redis? ( dev-python/redis[${PYTHON_USEDEP}] ) + selinux? ( sec-policy/selinux-salt ) + nova? ( + $(python_gen_cond_dep '>=dev-python/python-novaclient-2.17.0[${PYTHON_USEDEP}]' python3.1{0..1}) + ) + neutron? ( + $(python_gen_cond_dep '>=dev-python/python-neutronclient-2.3.6[${PYTHON_USEDEP}]' python3.1{0..1}) + ) + gnupg? ( dev-python/python-gnupg[${PYTHON_USEDEP}] ) + profile? ( dev-python/yappi[${PYTHON_USEDEP}] ) + vim-syntax? ( app-vim/salt-vim ) + zeromq? ( >=dev-python/pyzmq-19.0.0[${PYTHON_USEDEP}] ) +" +BDEPEND=" + sys-apps/findutils + dev-python/build[${PYTHON_USEDEP}] + test? ( + ${RDEPEND} + app-arch/zip + dev-python/apache-libcloud[${PYTHON_USEDEP}] + dev-python/boto3[${PYTHON_USEDEP}] + >=dev-python/certifi-2023.07.22[${PYTHON_USEDEP}] + dev-python/cherrypy[${PYTHON_USEDEP}] + >=dev-python/jsonschema-3.0[${PYTHON_USEDEP}] + dev-python/mako[${PYTHON_USEDEP}] + >=dev-python/mock-2.0.0[${PYTHON_USEDEP}] + >=dev-python/moto-2.0.0[${PYTHON_USEDEP}] + <dev-python/moto-5[${PYTHON_USEDEP}] + dev-python/passlib[${PYTHON_USEDEP}] + dev-python/bcrypt[${PYTHON_USEDEP}] + dev-python/pip[${PYTHON_USEDEP}] + dev-python/pygit2[${PYTHON_USEDEP}] + dev-python/pyinotify[${PYTHON_USEDEP}] + >=dev-python/pyopenssl-23.0.0[${PYTHON_USEDEP}] + >=dev-python/pytest-7.2.0[${PYTHON_USEDEP}] + >=dev-python/pytest-salt-factories-1.0.0_rc29[${PYTHON_USEDEP}] + dev-python/pytest-tempdir[${PYTHON_USEDEP}] + dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}] + dev-python/pytest-subtests[${PYTHON_USEDEP}] + dev-python/pytest-shell-utilities[${PYTHON_USEDEP}] + dev-python/pytest-skip-markers[${PYTHON_USEDEP}] + dev-python/pytest-system-statistics[${PYTHON_USEDEP}] + dev-python/pytest-custom-exit-code[${PYTHON_USEDEP}] + dev-python/flaky[${PYTHON_USEDEP}] + net-dns/bind-tools + >=dev-python/virtualenv-20.3.0[${PYTHON_USEDEP}] + dev-util/yamllint[${PYTHON_USEDEP}] + !x86? ( >=dev-python/boto3-1.21.46[${PYTHON_USEDEP}] ) + ) +" + +DOCS=( README.rst AUTHORS ) + +REQUIRED_USE=" + || ( raet zeromq ) + test? ( cheetah genshi ) + nova? ( || ( python_targets_python3_10 python_targets_python3_11 ) ) + neutron? ( || ( python_targets_python3_10 python_targets_python3_11 ) ) +" +RESTRICT=" + !test? ( test ) + x86? ( test ) +" + +PATCHES=( + "${FILESDIR}/salt-3003-gentoolkit-revdep.patch" +) + +python_prepare_all() { + local -a remove_test_files=( + # remove tests with external dependencies that may not be available, and + # tests that don't work in sandbox + tests/integration/externalapi/test_venafiapi.py + tests/integration/modules/test_rabbitmq.py + tests/integration/modules/test_supervisord.py + tests/integration/states/test_match.py + tests/pytests/functional/fileserver/hgfs/test_hgfs.py + tests/pytests/functional/loader/test_loader.py + tests/pytests/functional/modules/file/test_readlink.py + tests/pytests/functional/modules/file/test_symlink.py + tests/pytests/functional/modules/state/test_jinja_filters.py + tests/pytests/functional/modules/state/test_jinja_renderer.py + tests/pytests/functional/modules/state/test_mako_renderer.py + tests/pytests/functional/modules/state/test_pyobjects_renderer.py + tests/pytests/functional/modules/test_aptpkg.py + tests/pytests/functional/modules/test_dockermod.py + tests/pytests/functional/modules/test_etcd_mod.py + tests/pytests/functional/modules/test_grains.py + tests/pytests/functional/modules/test_mac_service.py + tests/pytests/functional/modules/test_saltcheck.py + tests/pytests/functional/modules/test_saltutil.py + tests/pytests/functional/modules/test_test.py + tests/pytests/functional/pillar/hg_pillar/test_hg_pillar.py + tests/pytests/functional/pillar/test_git_pillar.py + tests/pytests/functional/pillar/test_gpg.py + tests/pytests/functional/returners/test_etcd_return.py + tests/pytests/functional/runners/test_winrepo.py + tests/pytests/functional/sdb/test_etcd_db.py + tests/pytests/functional/state/test_masterless_tops.py + tests/pytests/functional/states/file/test_keyvalue.py + tests/pytests/functional/states/file/test_patch.py + tests/pytests/functional/states/file/test_rename.py + tests/pytests/functional/states/rabbitmq + tests/pytests/functional/states/test_docker_container.py + tests/pytests/functional/states/test_docker_network.py + tests/pytests/functional/states/test_etcd_mod.py + tests/pytests/functional/states/test_module.py + tests/pytests/functional/states/test_mysql.py + tests/pytests/functional/states/test_svn.py + tests/pytests/functional/states/test_virtualenv_mod.py + tests/pytests/functional/test_version.py + tests/pytests/functional/utils/test_vault.py + tests/pytests/integration/cli/test_syndic_eauth.py + tests/pytests/integration/daemons/test_memory_leak.py + tests/pytests/integration/grains/test_grains.py + tests/pytests/integration/master/test_clear_funcs.py + tests/pytests/integration/minion/test_reauth.py + tests/pytests/integration/modules/grains/test_append.py + tests/pytests/integration/modules/grains/test_module.py + tests/pytests/integration/modules/saltutil/test_grains.py + tests/pytests/integration/modules/saltutil/test_modules.py + tests/pytests/integration/modules/saltutil/test_wheel.py + tests/pytests/integration/modules/state/test_state_pillar_errors.py + tests/pytests/integration/modules/state/test_state_test.py + tests/pytests/integration/modules/test_cmdmod.py + tests/pytests/integration/modules/test_event.py + tests/pytests/integration/modules/test_file.py + tests/pytests/integration/modules/test_jinja.py + tests/pytests/integration/modules/test_pillar.py + tests/pytests/integration/modules/test_pip.py + tests/pytests/integration/modules/test_vault.py + tests/pytests/integration/modules/test_virt.py + tests/pytests/integration/modules/test_x509_v2.py + tests/pytests/integration/proxy/test_deltaproxy.py + tests/pytests/integration/proxy/test_shell.py + tests/pytests/integration/reactor/test_reactor.py + tests/pytests/integration/returners/test_noop_return.py + tests/pytests/integration/runners/state/orchestrate/test_orchestrate.py + tests/pytests/integration/runners/test_cache.py + tests/pytests/integration/runners/test_jobs.py + tests/pytests/integration/runners/test_manage.py + tests/pytests/integration/runners/test_saltutil.py + tests/pytests/integration/runners/test_vault.py + tests/pytests/integration/sdb/test_vault.py + tests/pytests/integration/ssh/state/test_pillar_override.py + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_requisite_fail.py + tests/pytests/integration/ssh/state/test_retcode_pillar_render_exception.py + tests/pytests/integration/ssh/state/test_retcode_render_exception.py + tests/pytests/integration/ssh/state/test_retcode_render_module_exception.py + tests/pytests/integration/ssh/state/test_retcode_run_fail.py + tests/pytests/integration/ssh/state/test_retcode_state_run_remote_exception.py + tests/pytests/integration/ssh/state/test_state.py + tests/pytests/integration/ssh/state/test_with_import_dir.py + tests/pytests/integration/ssh/test_cmdmod.py + tests/pytests/integration/ssh/test_config.py + tests/pytests/integration/ssh/test_cp.py + tests/pytests/integration/ssh/test_deploy.py + tests/pytests/integration/ssh/test_grains.py + tests/pytests/integration/ssh/test_jinja_mods.py + tests/pytests/integration/ssh/test_master.py + tests/pytests/integration/ssh/test_mine.py + tests/pytests/integration/ssh/test_pillar.py + tests/pytests/integration/ssh/test_pillar_compilation.py + tests/pytests/integration/ssh/test_pre_flight.py + tests/pytests/integration/ssh/test_publish.py + tests/pytests/integration/ssh/test_py_versions.py + tests/pytests/integration/ssh/test_raw.py + tests/pytests/integration/ssh/test_saltcheck.py + tests/pytests/integration/ssh/test_slsutil.py + tests/pytests/integration/states/test_beacon.py + tests/pytests/integration/states/test_file.py + tests/pytests/integration/states/test_include.py + tests/pytests/integration/states/test_ini_manage.py + tests/pytests/integration/states/test_state_test.py + tests/pytests/integration/states/test_x509_v2.py + tests/pytests/integration/utils/test_templates.py + tests/pytests/integration/wheel/test_key.py + tests/pytests/pkg/integration/test_check_imports.py + tests/pytests/pkg/integration/test_clean_zmq_teardown.py + tests/pytests/pkg/integration/test_enabled_disabled.py + tests/pytests/pkg/integration/test_help.py + tests/pytests/pkg/integration/test_logrotate_config.py + tests/pytests/pkg/integration/test_pkg.py + tests/pytests/pkg/integration/test_python.py + tests/pytests/scenarios/compat/test_with_versions.py + tests/pytests/unit/loader/test_lazy.py + tests/pytests/unit/modules/test_mongodb.py + tests/pytests/unit/modules/test_mysql.py + tests/pytests/unit/modules/test_schedule.py + tests/pytests/unit/pillar/test_consul_pillar.py + tests/pytests/unit/pillar/test_mysql.py + tests/pytests/unit/renderers/test_yamlex.py + tests/pytests/unit/roster/test_ansible.py + tests/pytests/unit/roster/test_dir.py + tests/pytests/unit/runners/test_reactor.py + tests/pytests/unit/states/file/test_keyvalue.py + tests/pytests/unit/utils/jinja/test_get_template.py + tests/pytests/unit/utils/jinja/test_salt_cache_loader.py + tests/pytests/unit/utils/test_cache.py + tests/pytests/unit/utils/test_etcd_util.py + tests/pytests/unit/utils/test_package.py + tests/pytests/unit/utils/test_versions.py + tests/unit/ext/test_ipaddress.py + tests/unit/modules/test_boto_elb.py + tests/unit/modules/test_boto_secgroup.py + tests/unit/modules/test_boto_vpc.py + tests/unit/modules/test_elasticsearch.py + tests/unit/modules/test_k8s.py + tests/unit/modules/test_kubernetesmod.py + tests/unit/modules/test_vsphere.py + tests/unit/netapi/rest_tornado/test_saltnado.py + tests/unit/states/test_boto_vpc.py + tests/unit/states/test_module.py + tests/unit/test_module_names.py + tests/unit/test_zypp_plugins.py + tests/unit/utils/test_extend.py + tests/unit/utils/test_pbm.py + tests/unit/utils/test_schema.py + tests/unit/utils/test_vmware.py + tests/unit/utils/test_vsan.py + + # tests that require network access + tests/integration/cloud + tests/integration/netapi + tests/kitchen/test_kitchen.py + tests/kitchen/tests/wordpress/tests + tests/pytests/functional/cli/test_salt_cloud.py + tests/pytests/functional/cli/test_salt_run_.py + tests/pytests/functional/modules/test_ansiblegate.py + tests/pytests/functional/modules/test_http.py + tests/pytests/functional/modules/test_pip.py + tests/pytests/functional/netapi + tests/pytests/functional/utils/test_etcd_util.py + tests/pytests/functional/utils/test_http.py + tests/pytests/integration/cli/test_salt_proxy.py + tests/pytests/integration/daemons/test_masterapi.py + tests/pytests/integration/modules/state/test_state.py + tests/pytests/integration/modules/state/test_state_state_events.py + tests/pytests/integration/netapi + tests/pytests/integration/pillar/cache/test_pillar_cache.py + tests/pytests/integration/pillar/test_fileclient.py + tests/pytests/integration/pillar/test_pillar_include.py + tests/pytests/integration/proxy/test_simple.py + tests/pytests/integration/runners/state/orchestrate/test_events.py + tests/pytests/integration/wheel/test_pillar_roots.py + tests/pytests/pkg/downgrade/test_salt_downgrade.py + tests/pytests/pkg/integration/test_pip.py + tests/pytests/pkg/integration/test_pip_upgrade.py + tests/pytests/pkg/integration/test_salt_api.py + tests/pytests/pkg/integration/test_salt_call.py + tests/pytests/pkg/integration/test_salt_exec.py + tests/pytests/pkg/integration/test_salt_grains.py + tests/pytests/pkg/integration/test_salt_key.py + tests/pytests/pkg/integration/test_salt_minion.py + tests/pytests/pkg/integration/test_salt_output.py + tests/pytests/pkg/integration/test_salt_pillar.py + tests/pytests/pkg/integration/test_salt_state_file.py + tests/pytests/pkg/integration/test_salt_ufw.py + tests/pytests/pkg/integration/test_salt_user.py + tests/pytests/pkg/integration/test_systemd_config.py + tests/pytests/pkg/integration/test_version.py + tests/pytests/pkg/upgrade/test_salt_upgrade.py + tests/pytests/scenarios/cluster/test_cluster.py + tests/pytests/unit/client/ssh/test_ssh.py + tests/pytests/unit/cloud/clouds/vmware + tests/pytests/unit/loader/test_loading_modules.py + tests/pytests/unit/runners/test_net.py + tests/pytests/unit/states/file/test_mod_beacon.py + tests/pytests/unit/test_client.py + tests/pytests/unit/utils/test_aws.py + tests/pytests/unit/utils/test_http.py + tests/unit/modules/test_boto3_elasticsearch.py + tests/unit/modules/test_boto3_route53.py + tests/unit/modules/test_network.py + tests/unit/modules/test_zcbuildout.py + tests/unit/states/test_zcbuildout.py + + # tests require root access + tests/integration/pillar/test_git_pillar.py + tests/integration/states/test_lxd_container.py + tests/integration/states/test_lxd_image.py + tests/integration/states/test_lxd_profile.py + tests/integration/states/test_supervisord.py + tests/pytests/functional/cache/test_mysql.py + tests/pytests/functional/cli/test_salt.py + tests/pytests/functional/modules/test_mysql.py + tests/pytests/functional/modules/test_vault.py + tests/pytests/functional/states/file/test_accumulated.py + tests/pytests/functional/utils/test_gitfs.py + tests/pytests/functional/utils/test_pillar.py + tests/pytests/scenarios/performance/test_performance.py + tests/pytests/unit/cloud/test_map.py + tests/pytests/unit/engines/test_slack_bolt_engine.py + tests/pytests/unit/modules/state/test_state.py + tests/pytests/unit/modules/state/test_top_file_merge.py + tests/pytests/unit/proxy/test_netmiko_px.py + tests/pytests/unit/proxy/test_ssh_sample.py + tests/pytests/unit/roster/test_sshknownhosts.py + + # tests that require boto + tests/pytests/unit/engines/test_sqs_events.py + + # first test always fails + tests/pytests/unit/utils/parsers/test_log_parsers.py + ) + + rm -r "${remove_test_files[@]}" || die + + # axe the boto dep (bug #888235) + find "${S}/tests" -name 'test_boto_*.py' -delete || die + + # removes contextvars, see bug: https://bugs.gentoo.org/799431 + sed -i '/^contextvars/d' requirements/base.txt || die + + # called_once should be assert_called_once_with + find "${S}/tests" -name '*.py' -print0 \ + | xargs -0 -- sed -i -e 's:[.]called_once:.assert_called_once:g' -- || die + + distutils-r1_python_prepare_all +} + +python_install_all() { + local -x USE_SETUPTOOLS=1 + distutils-r1_python_install_all + + local svc + for svc in minion master syndic api; do + newinitd "${FILESDIR}"/${svc}-initd-5 salt-${svc} + newconfd "${FILESDIR}"/${svc}-confd-1 salt-${svc} + systemd_dounit "${FILESDIR}"/salt-${svc}.service + done + + insinto /etc/${PN} + doins -r conf/* +} + +python_test() { + local -a EPYTEST_DESELECT=( + # doesn't like the distutils warning + tests/pytests/integration/cli/test_batch.py::test_batch_retcode + tests/pytests/integration/cli/test_batch.py::test_multiple_modules_in_batch + + # hangs indefinitely + tests/pytests/unit/test_minion.py::test_master_type_disable + + # needs root + tests/pytests/unit/modules/test_cmdmod.py::test_runas_env_sudo_group + tests/pytests/unit/modules/test_portage_config.py::test_enforce_nice_config + tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_muliassert + tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_muliassert_failure + + # don't like sandbox + tests/integration/modules/test_cp.py::CPModuleTest::test_get_file_str_https + tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_ftp + tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https + tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https_dest_empty + tests/integration/modules/test_cp.py::CPModuleTest::test_get_url_https_no_dest + tests/integration/states/test_git.py::LocalRepoGitTest::test_latest_force_reset_true_fast_forward + tests/pytests/functional/fileserver/test_roots.py::test_symlink_list + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_content + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_empty_file + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_append_on_match + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_newline + tests/pytests/functional/modules/file/test_replace.py::test_append_if_not_found_no_match_no_newline + tests/pytests/functional/modules/test_defaults.py::test_defaults_get + tests/pytests/functional/modules/test_system.py::test_get_system_date_time + tests/pytests/functional/modules/test_system.py::test_get_system_date_time_utc + tests/pytests/functional/pillar/test_top.py::test_pillar_top_compound_match + tests/pytests/functional/states/file/test_append.py::test_file_append_check_cmd + tests/pytests/functional/states/file/test_append.py::test_issue_1896_file_append_source + tests/pytests/functional/states/file/test_blockreplace.py::test_issue_49043 + tests/pytests/functional/states/file/test_comment.py::test_issue_62121 + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_in_with_id + tests/pytests/functional/states/file/test_directory.py::test_directory_clean_require_with_name + tests/pytests/functional/states/file/test_managed.py::test_file_managed_requisites + tests/pytests/functional/states/file/test_managed.py::test_issue_8947_utf8_sls + tests/pytests/functional/states/file/test_managed.py::test_managed_escaped_file_path + tests/pytests/functional/states/file/test_managed.py::test_managed_file_issue_51208 + tests/pytests/functional/states/file/test_managed.py::test_managed_file_with_grains_data + tests/pytests/functional/states/file/test_managed.py::test_managed_latin1_diff + tests/pytests/functional/states/file/test_managed.py::test_managed_source_hash_indifferent_case + tests/pytests/functional/states/file/test_managed.py::test_managed_unicode_jinja_with_tojson_filter + tests/pytests/functional/states/file/test_recurse.py::test_issue_2726_mode_kwarg + tests/pytests/functional/states/file/test_replace.py::test_file_replace_check_cmd + tests/pytests/functional/states/file/test_replace.py::test_file_replace_prerequired_issues_55775 + tests/pytests/functional/states/test_pip_state.py::test_22359_pip_installed_unless_does_not_trigger_warnings + tests/pytests/functional/states/test_pip_state.py::test_issue_2028_pip_installed_state + tests/pytests/functional/states/test_pip_state.py::test_issue_54755 + tests/pytests/functional/states/test_pip_state.py::test_pip_installed_errors + tests/pytests/functional/states/test_pip_state.py::test_pip_installed_removed + tests/pytests/functional/states/test_pip_state.py::test_pip_installed_removed_venv + tests/pytests/functional/states/test_pip_state.py::test_pip_installed_specific_env + tests/pytests/functional/states/test_x509_v2.py::"test_private_key_managed_passphrase_changed_not_overwrite[existing_pk0]" + tests/pytests/functional/utils/functools/test_namespaced_function.py::test_namespacing + tests/pytests/functional/utils/test_pillar.py::test_gitpython_env + tests/pytests/functional/utils/test_pillar.py::test_gitpython_fetch_request + tests/pytests/functional/utils/test_pillar.py::test_gitpython_multiple_repos + tests/pytests/functional/utils/test_pillar.py::test_pygit2_env + tests/pytests/functional/utils/test_pillar.py::test_pygit2_multiple_repos + tests/pytests/functional/utils/test_winrepo.py::test_gitpython_winrepo_simple + tests/pytests/functional/utils/test_winrepo.py::test_pygit2_winrepo_simple + tests/pytests/integration/minion/test_return_retries.py::test_pillar_timeout + tests/pytests/integration/minion/test_return_retries.py::test_publish_retry + tests/pytests/integration/modules/saltutil/test_pillar.py::"test_pillar_refresh[False]" + tests/pytests/integration/modules/saltutil/test_pillar.py::"test_pillar_refresh[True]" + tests/pytests/integration/modules/test_state.py::test_logging_and_state_output_order + tests/pytests/integration/modules/test_test.py::test_deprecation_warning_emits_deprecation_warnings + tests/pytests/integration/renderers/test_jinja.py::test_issue_54765_call + tests/pytests/integration/renderers/test_jinja.py::test_issue_54765_salt + tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args0-kwargs0]" + tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args1-kwargs1]" + tests/pytests/integration/ssh/state/test_pillar_override_template.py::"test_it[args2-kwargs2]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args0-20]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args1-20]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args2-20]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args3-20]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args4-0]" + tests/pytests/integration/ssh/state/test_retcode_highstate_verification_structure_fail.py::"test_it[args5-20]" + tests/pytests/integration/ssh/test_jinja_filters.py::test_dateutils_strftime + tests/pytests/integration/ssh/test_terraform.py::test_terraform_roster + tests/pytests/unit/config/schemas/test_ssh.py::test_config_validate + tests/pytests/unit/grains/test_core.py::test_get_machine_id + tests/pytests/unit/grains/test_package.py::test_grain_package_type + tests/pytests/unit/loader/test_loader.py::test_named_loader_context_name_not_packed + tests/pytests/unit/modules/test_beacons.py::test_add + tests/pytests/unit/modules/test_beacons.py::test_add_beacon_module + tests/pytests/unit/modules/test_beacons.py::test_delete + tests/pytests/unit/modules/test_beacons.py::test_delete_beacon_module + tests/pytests/unit/modules/test_beacons.py::test_disable + tests/pytests/unit/modules/test_beacons.py::test_enable + tests/pytests/unit/modules/test_beacons.py::test_enable_beacon_module + tests/pytests/unit/modules/test_beacons.py::test_save + tests/pytests/unit/modules/test_gpg.py::test_create_key_with_passphrase_with_gpg_passphrase_in_pillar + tests/pytests/unit/modules/test_gpg.py::test_create_key_without_passphrase + tests/pytests/unit/modules/test_saltutil.py::test_clear_job_cache + tests/pytests/unit/modules/test_saltutil.py::test_list_extmods + tests/pytests/unit/pillar/test_pillar.py::test_pillar_get_cache_disk + tests/pytests/unit/state/test_state_compiler.py::test_verify_high_too_many_functions_declared_error_message + tests/pytests/unit/states/test_pkg.py::test_mod_beacon + tests/pytests/unit/states/test_service.py::test_mod_beacon + tests/pytests/unit/test_ext_importers.py::test_tornado_import_override + tests/pytests/unit/utils/test_rsax931.py::test_find_libcrypto_darwin_catalina + tests/pytests/unit/utils/test_versions.py::test_warn_until_good_version_argument + tests/unit/transport/test_ipc.py::IPCMessagePubSubCase::test_async_reading_streamclosederror + tests/unit/utils/test_thin.py::SSHThinTestCase::test_thin_dir + tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_shiftjis + tests/unit/utils/test_vt.py::VTTestCase::test_split_multibyte_characters_unicode + tests/unit/utils/test_vt.py::VTTestCase::test_vt_size + + # tests that need network access + tests/pytests/functional/states/file/test_managed.py::test_verify_ssl_https_source + tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_architectures + tests/pytests/unit/modules/test_aptpkg.py::test_sourceslist_multiple_comps + tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config + tests/pytests/unit/modules/test_yumpkg.py::test_get_yum_config_value_none + tests/pytests/unit/test_ext_importers.py::test_tornado_import_override + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_false + tests/pytests/unit/utils/test_http.py::test_backends_decode_body_true + tests/pytests/unit/utils/test_http.py::test_query_proxy + tests/pytests/unit/utils/test_network.py::test_isportopen + + # tests that need root access + tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_call_salt_command + tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_call_salt_command2 + tests/unit/modules/test_saltcheck.py::SaltcheckTestCase::test_run_test_1 + ) + [[ ${EPYTHON#*.} -ge 11 ]] && EPYTEST_DESELECT+=( + tests/unit/test_master.py::TransportMethodsTest::test_aes_funcs_black + tests/unit/test_master.py::TransportMethodsTest::test_clear_funcs_black + ) + [[ ${EPYTHON#*.} -ge 12 ]] && EPYTEST_DESELECT+=( + tests/integration/modules/test_mine.py::MineTest::test_get_allow_tgt + tests/integration/modules/test_mine.py::MineTest::test_mine_delete + tests/integration/modules/test_mine.py::MineTest::test_send_allow_tgt + tests/integration/modules/test_mine.py::MineTest::test_send_allow_tgt_compound + tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_checkall + tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_checkall_saltenv + tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_run + tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_saltenv + tests/integration/modules/test_saltcheck.py::SaltcheckModuleTest::test_saltcheck_state + tests/integration/output/test_output.py::OutputReturnTest::test_output_highstate + tests/integration/output/test_output.py::OutputReturnTest::test_output_json + tests/integration/output/test_output.py::OutputReturnTest::test_output_nested + tests/integration/output/test_output.py::OutputReturnTest::test_output_pprint + tests/integration/output/test_output.py::OutputReturnTest::test_output_raw + tests/integration/output/test_output.py::OutputReturnTest::test_output_txt + tests/integration/output/test_output.py::OutputReturnTest::test_output_yaml + tests/integration/output/test_output.py::OutputReturnTest::test_output_yaml_namespaced_dict_wrapper + tests/integration/output/test_output.py::OutputReturnTest::test_static_simple + tests/integration/runners/test_manage.py::ManageTest::test_down + tests/integration/runners/test_manage.py::ManageTest::test_up + tests/integration/shell/test_master_tops.py::MasterTopsTest::test_custom_tops_gets_utilized + tests/integration/states/test_archive.py::ArchiveTest::test_local_archive_extracted_with_skip_files_list_verify_and_keep_source_is_false + tests/pytests/functional/states/test_pip_state.py::test_issue_2087_missing_pip + tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[-99.9]" + tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[42]" + tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value2]" + tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value3]" + tests/pytests/unit/modules/test_nilrt_ip.py::"test_when_default_value_is_not_a_string_and_option_is_missing_the_default_value_should_be_returned[default_value4]" + tests/pytests/unit/modules/test_nilrt_ip.py::test_when_config_has_no_quotes_around_string_it_should_be_returned_as_is + tests/pytests/unit/modules/test_nilrt_ip.py::test_when_config_has_quotes_around_string_they_should_be_removed + tests/pytests/unit/utils/vault/test_auth.py::"test_approle_auth_get_token_login[secret_id-approle]" + tests/unit/modules/test_zypperpkg.py::ZypperTestCase::test_repo_value_info + tests/unit/utils/test_color.py::ColorUtilsTestCase::test_get_colors + ) + + # testsuite likes lots of files + ulimit -n 4096 || die + + # ${T} is too long a path for the tests to work + local TMPDIR + TMPDIR="$(mktemp --directory --tmpdir=/tmp ${PN}-XXXX)" || die + ( + test_exports=( + TMPDIR + SHELL="/bin/bash" + USE_SETUPTOOLS=1 + NO_INTERNET=1 + PYTHONDONTWRITEBYTECODE=1 + ) + export "${test_exports[@]}" + + cleanup() { rm -rf "${TMPDIR}" || die; } + + trap cleanup EXIT + + addwrite "${TMPDIR}" + + epytest --run-slow + ) +} |