add app-admin/salt with python-3.11 compat
This commit is contained in:
parent
7397049453
commit
60d7412b0b
|
@ -0,0 +1,24 @@
|
||||||
|
AUX api-confd-1 179 BLAKE2B d014cadfb5dd99c85b1dee0e743f413fc5d6eb05629045bad5df108e6e96104b3b4f5e3736518baff5473c68d94906bb90cb7fe8167e136dd6603eb1087cc01c SHA512 de1d70050c2f911abb306c1b2253f2fdaac505a5ddd34937d7bef9dc9b876e9c6ed06e330a816fcafa38feaf67837235e78f2d97d149fef9fe20a29d945f8f22
|
||||||
|
AUX api-initd-5 540 BLAKE2B 11a4d14aaff3040484e9e704f68cc7562fe52694f7dc5eb6df0ab6cbac0cc4c4958c1f9cf13402a5f4f1c4361c93c44e71228a2f8f7f69b1c400a280c8934659 SHA512 81a0e3b01d95af5475f6fd12614134ca84c9d53b68648aba9b328947d6e92fae1889276d58cb3749e3e542f42dbda507d28531102549b4fc6c109e2f14146f8b
|
||||||
|
AUX master-confd-1 188 BLAKE2B 8ac416a7ff64c73556f07a08268ea7d91547e242becd345ac35da7b64f6b2e4aba276e8920e7353bd2caeaffa3034349496b00622191793994bbd4d25faa3c3c SHA512 c58fc025a3654b59f79c6e23fe135d75ebad8b166bc5214f4842c3dd92192e3598480f9fd6960ad2dc36d3ee45ff971650c5e0156353c1c045650f86c9a68db9
|
||||||
|
AUX master-initd-5 558 BLAKE2B 09a1485449b239b4f0d7e0514572084769c73b28053fc6ff9b4cbeb239358e7311784c15e883ddf5ca8310794e3d2bb851f2a765bb3aa17f8081ee008bfd130a SHA512 36b2d601d4dd3bd7b1758e77029b70916adbf8919c3ef04fd867ca25b143666d0c2f5834adddf05e7c2b013f04939f57e3396c888514e08f1679e6459a6ce7bb
|
||||||
|
AUX minion-confd-1 188 BLAKE2B ad20094c30f9aa573397d347f9fb11acafba2f724b6c836d7ec57f10d4182c300a4b0ec572b5f3301174febdfc69c30752c3b0eabdfdf9f4963b03531db23523 SHA512 0051e13351cef8db81dc075a194bb384723f07d5591b5b4d3f3adf4180afaf7beced470ab79ceca9d1ec0dae62dbd72084eb76af009fc78411a011050a94a2ed
|
||||||
|
AUX minion-initd-5 564 BLAKE2B 19f2d909b1a91b5cf22c932b04b794ef536c3a84fbd36676d4bf136c6af66ae4ea94abcf9657919cb4cf85ee88cc6e93df0e7373e0410823550cc45ebc8f5673 SHA512 c92165fe73157c9c3898f7c8c90e3b1626f704d4a8432237bd264463c66ba00e89a1d66e44b049703fd32ce48f771248b902e7183c4e31ee6611f938704b2583
|
||||||
|
AUX salt-3002-tests.patch 1125 BLAKE2B 345c094c38a1b62190587062a86da4e0a516988fb2bbf98c295da87f0abd456cfc8f25c11fe10a1c4571d4eb25390c6d89b0e300bd2ae6d82212d1685af8ed30 SHA512 7f9d6f8c4a5d34381c516c72d77de6613ed646fb88f89b7c4180afebb0bf0ee34a99ed02a7e8d7a6836a61c01653fe97a13c8caa18898a507a03091cff8e9d30
|
||||||
|
AUX salt-3003-gentoolkit-revdep.patch 514 BLAKE2B aff27558a2043970feeb3eda70cf8e9112b5545af40ba215c7859520ef95a9824001274e837929ef6c25f8e1c35a8ac73f1033e63336bcbaf48dbd4b54c2d42c SHA512 c8a4649ac241f219cf576b0896f48dffc0d5a273118713829c0ad34594f77cffceaa4f06a4d0f47a17b13d6e71b5787fc27f8ee97c774e53a6d15d1b282f99b3
|
||||||
|
AUX salt-3003-skip-tests-that-oom-machine.patch 732 BLAKE2B b9e10cf8d9ce7f36371fd30fcf592dce4933a05ca2d85c41b2159233272f2e7c90315fbd998c4064f3733b5b1944f9f96816418ed7eb434f3b9df324de2e859b SHA512 e7bc9c63d95a9af4e85372ca973c5023660c332b67486382ce898e7d60c3f50e2aca59e2634a2e87ab7fa8b34e45bfd3a781e04b8003108efbfcc67cd921aff4
|
||||||
|
AUX salt-3003.1-tests.patch 1151 BLAKE2B b2f0d99bf4bd90a7ea85ae5cc6abb91dd078ad8a95b062863a21573067f3df6045fe23ffd1b3f397e28b90b25126798253e8a9001509ad786cee3f318a900321 SHA512 9340a1dd343af45467be63b1f6991cd06fa57ffc187bcff4a96c75a9666a1429b98ce5b497354bc4cb975c0f6bcd9a64dbfb819b6bfdba02bb5917446d0a36fc
|
||||||
|
AUX salt-3005-relax-pyzmq-dep.patch 332 BLAKE2B d22d94b7680fb81e642b83cb7d823137e7e208b43a1720b131401fb957bcb3deb6a0fe5ca87da528cdf60ac219820d259d0b03a905e17142c9cd4d939b4bacf1 SHA512 7c5b963436c3066bf8e8f528acf04ea8ddfa2a5a19adb9486f9888346d55e56fdfcd97a4a04db18d85476cb8ecc8a350343855d765387744706e43e868464f5e
|
||||||
|
AUX salt-3005-tests.patch 4101 BLAKE2B 6a7d7dee4e631a7619bf1b7fa6bd08b93c0bf31342ce72f734bb645206604ffed9ae2ddae9cebe01401cbe100c224e97f18a69ede5f40a041158d1cd8878dc0f SHA512 cbc3b3d625ab8e20aa7b166dd6ddca1728c4bf562cc14d28fa684573c6ee1d42a270b0f029e5d978803a30103e7ad281d516afff66d18bf31308528fae79c00c
|
||||||
|
AUX salt-3005.1-importlib-metadata-5-r1.patch 1162 BLAKE2B cbc8df0043881725eb00a6e45ccc03e25f95a6260b4a4b42343c69a6bd8edcf0bb45312644a8e6a66b50a0c4ce0aad7be454b1b8d54a786851b33c7d4b143e10 SHA512 7d2f8c86f22b238dabda0727c338e2e8d33e06a36fcccf5b3b508ac610899f2d6416d7c9e285e992f0d76fc9d04c126640b2b84a227f9a82f4973cb472a4a14a
|
||||||
|
AUX salt-3005.1-modules-file-python-3.11-host.patch 4206 BLAKE2B 9cd3cb68b5c1a95475834ae917a2f6fbdbe3424c9f1e837a0e797b84e291e3530f86a2f7d2286e0070f433817ec06b2fd4d0a069b47acb1b0646653862337ece SHA512 4bc03979e1a4202d5ccb2b3159e178bc72c2a4be4297d7b9306479a5c7fe8cc81fc7d25474d80c2627e638db25e73cd4e8f7e1b25c8e15317e22986d63307823
|
||||||
|
AUX salt-3005.1-no-entry-points.patch 428 BLAKE2B 1bcf3b070afd01c56985290051a3cb031d5ca83b42631eba5f05d7648eabf13bca44573811b767d739dc9bc6d0a5da6f99de87b57c678df79cc172fa6dd5495f SHA512 ed5712689a6d39da9c6a67f28a48d35bbd271a6a3b898cbb0e0493e1813cc99e64388fb60707e6fee95691e339336c2656278780115b39d285c380ded92fe3cb
|
||||||
|
AUX salt-3005.1-tests.patch 2367 BLAKE2B 467af423de22b4ddeb80fef3d4682976283116698b7c2551c4710e049d8ad7749a4eb07c541a427ed540fdea6a0e4f4e63d96988bafd92974cc3b1026e27fd03 SHA512 4ba3c36be9de377848880819fc4bacf72978a12e483bea90a4e5e7524d7212b5d554302000f6c628156ec5aafbf48d662dec2764d96253be74fa202c73e7fc67
|
||||||
|
AUX salt-api.service 166 BLAKE2B 32d28ef4ef3c60942bed3fa3a01d70a9af387705844326cdf9339d7c887238a1e6817d78ffd1cb205a6397a2138c2389ea00bf53be84a17b23bea140279bf42c SHA512 bab6b8380c965bf16e23078ebe6f38d942300829d4c89ddf23b630bd57b4d371f80687d85dd9e0cc1b669f2ca882aecde1bc8d7d82382a02ed20e493d3f04702
|
||||||
|
AUX salt-master.service 169 BLAKE2B 15e7a4f64cfa75eb8d8576a7d0b61ea0c9937c94fd2130fd6c123a82187f08b5ed533c168a7310fd94d9bd2cecf9d0ba94665c653a971ef61e5e18ffdf087a15 SHA512 87fe27fc0748f4191bd1c6883bb362c95cce8fe1f409e2679b229ddfd9de6c99438859dfa0a47b042977d659029ef56e406f1e8aa01761bff21af4784f9dd5f8
|
||||||
|
AUX salt-minion.service 162 BLAKE2B 6f7b6b72e26d1651dbcb324b1e0cfef9f4b5a794f40566297c5bc469b351587db4d9805bed124774107efb64e6ed3e25fefa899b42a38064ee6fe26fd990ae58 SHA512 99f0a5c696e38b42b283416736a23e535ccc53095928b205914cf4b69c0df931a6752205985726527f7889b01dfece78466be28448458b15064edd04aca3e5ed
|
||||||
|
AUX salt-syndic.service 169 BLAKE2B 0d00f20b4663804eaa4b6a1a1b32ed87b04d1f4df6a8e8e0b2a0e3d17f71e1bb53f71f6168446aaf3765692cd540217c4cdf5ab8dd9cb7032801aa798d8a9bc3 SHA512 b45509a22a18f573726a868fda1591eaf42ef44220960dda698274ba8ff1db8cdc302605133ab61b188e15017ba15c5f409f3ee64e026b635ac359eea7aad7d0
|
||||||
|
AUX syndic-confd-1 188 BLAKE2B 98f13eb627963d65df26140f348c04eb8c253d444d36ecd1f5ef344ad89901b0a5ed62c64364e90595c2d2ee2766f30802a4a86a2555bbea343ab410292359af SHA512 35fe9bf4732c8a53b47099ffe5f9468d884ec3e2671451a6d52821dde6c70c63176b29ade0d700b99aaf47557f58179f780422843346bd3aa6513d9465ec9f58
|
||||||
|
AUX syndic-initd-5 558 BLAKE2B 5e1ea25b57f56ad7bfb8be0c845e7da9f99af03c50c31ca2031e604267c680555d0d8a3ef6299ec588770f26dad19d262c8b9403391b60fb17c6811d7946107a SHA512 6e927925cf1e4d0f901bec10499a8ecf1193b99742cfda5f94f70d0ec743902b1b89728cb2e447b8b4879a9417d0d482b813161968dc9c2b2c7944b3af14df14
|
||||||
|
DIST salt-3005.1.tar.gz 17914349 BLAKE2B 697c2068bf119e4a19f92a86ce880fec9375c10ba549cdcdd2182cfeaacce31c7bc4c4c91e1a609906b4c5373bb5e3120e0db47ede5b45ee20942d7b2d201e64 SHA512 391f995f0129f3d7104a0eea4fd83b18aa6ecae0fd7a2c77c1154e24b0bcd52cef4b63db12597c85737bb33ddf605e0c23370cef3bf47f9ea85af5b77d74dc50
|
||||||
|
EBUILD salt-3005.1-r1.ebuild 7226 BLAKE2B 46a302e03d89dd596ed4e617b8ff37b934669f4569c5bd431c7b8cbbf6cf7defd1839ebcbbb6376e3542899b93e87350427cd2336ab88ca70a6af60bf415fdb6 SHA512 762b081b18ff10c44bb7a6f0aec52e121da322838ef485204e3b7f09a24fc68ffe9e9b7effa0b4b8298f289c99a1a5f8adcac1b85840bb561e3e1d52ac29c466
|
|
@ -0,0 +1,5 @@
|
||||||
|
# /etc/conf.d/salt-api: config file for /etc/init.d/salt-api
|
||||||
|
|
||||||
|
# see man pages for salt-minion or run `salt-api --help`
|
||||||
|
# for valid cmdline options
|
||||||
|
SALT_OPTS="--log-level=warning"
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
command="/usr/bin/salt-api"
|
||||||
|
command_args="${SALT_OPTS}"
|
||||||
|
pidfile="/var/run/supervisor-salt-api.pid"
|
||||||
|
daemon_pidfile="/var/run/salt-api.pid"
|
||||||
|
command_args_background="--daemon --pid-file=\"${daemon_pidfile}\""
|
||||||
|
name="SALT API daemon"
|
||||||
|
retry="20"
|
||||||
|
|
||||||
|
supervisor=supervise-daemon
|
||||||
|
output_logger="logger -p daemon.info -t salt-api.stdout --"
|
||||||
|
error_logger="logger -p daemon.err -t salt-api.error --"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
use net logger
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
# /etc/conf.d/salt-master: config file for /etc/init.d/salt-master
|
||||||
|
|
||||||
|
# see man pages for salt-minion or run `salt-master --help`
|
||||||
|
# for valid cmdline options
|
||||||
|
SALT_OPTS="--log-level=warning"
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
command="/usr/bin/salt-master"
|
||||||
|
command_args="${SALT_OPTS}"
|
||||||
|
pidfile="/var/run/supervisor-salt-master.pid"
|
||||||
|
daemon_pidfile="/var/run/salt-master.pid"
|
||||||
|
command_args_background="--daemon --pid-file=\"${daemon_pidfile}\""
|
||||||
|
name="SALT master daemon"
|
||||||
|
retry="20"
|
||||||
|
|
||||||
|
supervisor=supervise-daemon
|
||||||
|
output_logger="logger -p daemon.info -t salt-master.stdout --"
|
||||||
|
error_logger="logger -p daemon.err -t salt-master.error --"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
use net logger
|
||||||
|
}
|
|
@ -0,0 +1,5 @@
|
||||||
|
# /etc/conf.d/salt-minion: config file for /etc/init.d/salt-minion
|
||||||
|
|
||||||
|
# see man pages for salt-minion or run `salt-minion --help`
|
||||||
|
# for valid cmdline options
|
||||||
|
SALT_OPTS="--log-level=warning"
|
|
@ -0,0 +1,20 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
command="/usr/bin/salt-minion"
|
||||||
|
command_args="${SALT_OPTS}"
|
||||||
|
pidfile="/var/run/supervisor-salt-minion.pid"
|
||||||
|
daemon_pidfile="/var/run/salt-minion.pid"
|
||||||
|
command_args_background="--daemon --pid-file=\"${daemon_pidfile}\""
|
||||||
|
name="SALT minion daemon"
|
||||||
|
retry="20"
|
||||||
|
|
||||||
|
supervisor=supervise-daemon
|
||||||
|
output_logger="logger -p daemon.info -t salt-minion.stdout --"
|
||||||
|
error_logger="logger -p daemon.err -t salt-minion.error --"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
need net
|
||||||
|
use logger
|
||||||
|
}
|
|
@ -0,0 +1,27 @@
|
||||||
|
diff --git a/tests/unit/utils/test_verify.py b/tests/unit/utils/test_verify.py
|
||||||
|
index 5662cf621b..16aa6d08da 100644
|
||||||
|
--- a/tests/unit/utils/test_verify.py
|
||||||
|
+++ b/tests/unit/utils/test_verify.py
|
||||||
|
@@ -329,6 +329,7 @@ class TestVerifyLog(TestCase):
|
||||||
|
self.assertTrue(os.path.exists(path))
|
||||||
|
|
||||||
|
|
||||||
|
+@skipIf(True, "skipping since temp dir is a symlink")
|
||||||
|
class TestCleanPath(TestCase):
|
||||||
|
"""
|
||||||
|
salt.utils.clean_path works as expected
|
||||||
|
@@ -394,12 +395,14 @@ class TestCleanPathLink(TestCase):
|
||||||
|
def tearDown(self):
|
||||||
|
shutil.rmtree(self.tmpdir)
|
||||||
|
|
||||||
|
+ @skipIf(True, "skipping since temp dir is a symlink")
|
||||||
|
def test_clean_path_symlinked_src(self):
|
||||||
|
test_path = os.path.join(self.from_path, "test")
|
||||||
|
expect_path = os.path.join(self.to_path, "test")
|
||||||
|
ret = clean_path(self.from_path, test_path)
|
||||||
|
assert ret == expect_path, "{} is not {}".format(ret, expect_path)
|
||||||
|
|
||||||
|
+ @skipIf(True, "skipping since temp dir is a symlink")
|
||||||
|
def test_clean_path_symlinked_tgt(self):
|
||||||
|
test_path = os.path.join(self.to_path, "test")
|
||||||
|
expect_path = os.path.join(self.to_path, "test")
|
|
@ -0,0 +1,13 @@
|
||||||
|
diff --git a/salt/modules/gentoolkitmod.py b/salt/modules/gentoolkitmod.py
|
||||||
|
index cc78c37114..f0949d19a8 100644
|
||||||
|
--- a/salt/modules/gentoolkitmod.py
|
||||||
|
+++ b/salt/modules/gentoolkitmod.py
|
||||||
|
@@ -49,7 +49,7 @@ def revdep_rebuild(lib=None):
|
||||||
|
|
||||||
|
salt '*' gentoolkit.revdep_rebuild
|
||||||
|
"""
|
||||||
|
- cmd = "revdep-rebuild -i --quiet --no-progress"
|
||||||
|
+ cmd = "revdep-rebuild -i --quiet"
|
||||||
|
if lib is not None:
|
||||||
|
cmd += " --library={0}".format(lib)
|
||||||
|
return __salt__["cmd.retcode"](cmd, python_shell=False) == 0
|
|
@ -0,0 +1,20 @@
|
||||||
|
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):
|
||||||
|
"""
|
|
@ -0,0 +1,25 @@
|
||||||
|
diff --git a/tests/integration/files/file/base/_modules/runtests_helpers.py b/tests/integration/files/file/base/_modules/runtests_helpers.py
|
||||||
|
index 3ee0e2da5f..abf9b71431 100644
|
||||||
|
--- a/tests/integration/files/file/base/_modules/runtests_helpers.py
|
||||||
|
+++ b/tests/integration/files/file/base/_modules/runtests_helpers.py
|
||||||
|
@@ -27,7 +27,7 @@ except ImportError:
|
||||||
|
else "/tmp"
|
||||||
|
)
|
||||||
|
# This tempdir path is defined on tests.integration.__init__
|
||||||
|
- TMP = os.path.join(SYS_TMP_DIR, "salt-tests-tmpdir")
|
||||||
|
+ TMP = os.path.join(SYS_TMP_DIR, "salt-t")
|
||||||
|
|
||||||
|
class RUNTIME_VARS:
|
||||||
|
TMP = TMP
|
||||||
|
diff --git a/tests/unit/ext/test_ipaddress.py b/tests/unit/ext/test_ipaddress.py
|
||||||
|
index 4fd87d1c3f..43306ba8f4 100644
|
||||||
|
--- a/tests/unit/ext/test_ipaddress.py
|
||||||
|
+++ b/tests/unit/ext/test_ipaddress.py
|
||||||
|
@@ -137,6 +137,7 @@ class CommonTestMixin:
|
||||||
|
|
||||||
|
|
||||||
|
class CommonTestMixin_v4(CommonTestMixin):
|
||||||
|
+ @pytest.mark.skipif(sys.hexversion >= 0x03090000, reason="leading zeros disallowed in 3.9+")
|
||||||
|
def test_leading_zeros(self):
|
||||||
|
self.assertInstancesEqual("000.000.000.000", "0.0.0.0")
|
||||||
|
self.assertInstancesEqual("192.168.000.001", "192.168.0.1")
|
|
@ -0,0 +1,12 @@
|
||||||
|
diff --git a/requirements/zeromq.txt b/requirements/zeromq.txt
|
||||||
|
index eb4d796418..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
|
|
@ -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(
|
|
@ -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
|
||||||
|
|
|
@ -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,
|
|
@ -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",
|
|
@ -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)
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The Salt Master Server
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/salt-api
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The Salt Master Server
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/salt-master
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The Salt Minion
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/salt-minion
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,10 @@
|
||||||
|
[Unit]
|
||||||
|
Description=The Salt Master Server
|
||||||
|
After=syslog.target network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
ExecStart=/usr/bin/salt-syndic
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
|
@ -0,0 +1,5 @@
|
||||||
|
# /etc/conf.d/salt-syndic: config file for /etc/init.d/salt-syndic
|
||||||
|
|
||||||
|
# see man pages for salt-minion or run `salt-syndic --help`
|
||||||
|
# for valid cmdline options
|
||||||
|
SALT_OPTS="--log-level=warning"
|
|
@ -0,0 +1,19 @@
|
||||||
|
#!/sbin/openrc-run
|
||||||
|
# Copyright 1999-2021 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
command="/usr/bin/salt-syndic"
|
||||||
|
command_args="${SALT_OPTS}"
|
||||||
|
pidfile="/var/run/supervisor-salt-syndic.pid"
|
||||||
|
daemon_pidfile="/var/run/salt-syndic.pid"
|
||||||
|
command_args_background="--daemon --pid-file=\"${daemon_pidfile}\""
|
||||||
|
name="SALT syndic daemon"
|
||||||
|
retry="20"
|
||||||
|
|
||||||
|
supervisor=supervise-daemon
|
||||||
|
output_logger="logger -p daemon.info -t salt-syndic.stdout --"
|
||||||
|
error_logger="logger -p daemon.err -t salt-syndic.error --"
|
||||||
|
|
||||||
|
depend() {
|
||||||
|
use net logger
|
||||||
|
}
|
|
@ -0,0 +1,219 @@
|
||||||
|
# Copyright 1999-2023 Gentoo Authors
|
||||||
|
# Distributed under the terms of the GNU General Public License v2
|
||||||
|
|
||||||
|
EAPI=8
|
||||||
|
PYTHON_COMPAT=( python3_{10..11} )
|
||||||
|
|
||||||
|
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.0.3[${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[${PYTHON_USEDEP}]
|
||||||
|
>=dev-python/markupsafe-2.0.1[${PYTHON_USEDEP}]
|
||||||
|
>=dev-python/requests-1.0.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/async-timeout[${PYTHON_USEDEP}]
|
||||||
|
>=dev-python/libcloud-2.5.0[${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[${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/boto-2.32.1[${PYTHON_USEDEP}]
|
||||||
|
dev-python/certifi[${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
|
||||||
|
dev-python/pip[${PYTHON_USEDEP}]
|
||||||
|
dev-python/pyopenssl[${PYTHON_USEDEP}]
|
||||||
|
>=dev-python/pytest-7.0.1[${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}]
|
||||||
|
dev-python/libcloud[${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-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-3005-relax-pyzmq-dep.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"
|
||||||
|
)
|
||||||
|
|
||||||
|
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_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
|
||||||
|
rm tests/pytests/functional/utils/test_async_event_publisher.py || die
|
||||||
|
rm tests/pytests/functional/runners/test_winrepo.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
|
||||||
|
rm -r tests/pytests/{integration,functional}/netapi tests/integration/netapi || die
|
||||||
|
|
||||||
|
# tests require root access
|
||||||
|
rm tests/integration/pillar/test_git_pillar.py || die
|
||||||
|
rm tests/integration/states/test_supervisord.py || 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
|
||||||
|
|
||||||
|
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() {
|
||||||
|
# testsuite likes lots of files
|
||||||
|
ulimit -n 4096 || die
|
||||||
|
|
||||||
|
local -a disable_tests=(
|
||||||
|
# doesn't like the distutils warning
|
||||||
|
batch_retcode
|
||||||
|
multiple_modules_in_batch
|
||||||
|
# hangs indefinitely
|
||||||
|
master_type_disable
|
||||||
|
# needs root
|
||||||
|
runas_env_sudo_group
|
||||||
|
# don't like sandbox
|
||||||
|
split_multibyte_characters_{shiftjis,unicode}
|
||||||
|
# doesn't like sandbox env
|
||||||
|
log_sanitize
|
||||||
|
)
|
||||||
|
local textexpr
|
||||||
|
testexpr=$(printf 'not %s and ' "${disable_tests[@]}")
|
||||||
|
|
||||||
|
# ${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" \
|
||||||
|
"${EPYTHON}" -m pytest -vv -k "${testexpr%and }" \
|
||||||
|
|| die "testing failed with ${EPYTHON}"
|
||||||
|
)
|
||||||
|
}
|
Loading…
Reference in New Issue