summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick McLean <patrick.mclean@sony.com>2020-07-13 15:22:44 -0700
committerPatrick McLean <chutzpah@gentoo.org>2020-07-13 15:33:29 -0700
commit5dda3e3919e084562927d0179ac448e83f4b9c01 (patch)
tree7d0391330af714cb138b967a97802a73db4765cb /app-admin
parentRevert "dev-python/pytest-salt: Remove redundant versions" (diff)
downloadgentoo-5dda3e3919e084562927d0179ac448e83f4b9c01.tar.gz
gentoo-5dda3e3919e084562927d0179ac448e83f4b9c01.tar.bz2
gentoo-5dda3e3919e084562927d0179ac448e83f4b9c01.zip
app-admin/salt: add 2019.2.5-r1 with USE=raet removed
Was dropped because of some python3.6 only dependencies. Disabling USE=raet makes these dependencies no longer required, the raet protocol has been depricated upstream anyway. Copyright: Sony Interactive Entertainment Inc. Package-Manager: Portage-2.3.103, Repoman-2.3.23 Signed-off-by: Patrick McLean <chutzpah@gentoo.org>
Diffstat (limited to 'app-admin')
-rw-r--r--app-admin/salt/Manifest1
-rw-r--r--app-admin/salt/files/salt-2019.2.0-remove-raet-tests.patch43
-rw-r--r--app-admin/salt/files/salt-2019.2.0-tests.patch73
-rw-r--r--app-admin/salt/files/salt-2019.2.2-newer-deps.patch136
-rw-r--r--app-admin/salt/files/salt-2019.2.2-workaround-broken-mock-on-py2.patch28
-rw-r--r--app-admin/salt/salt-2019.2.5-r1.ebuild150
6 files changed, 431 insertions, 0 deletions
diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest
index 6ceeed26bcc..97d1031e86e 100644
--- a/app-admin/salt/Manifest
+++ b/app-admin/salt/Manifest
@@ -1,3 +1,4 @@
+DIST salt-2019.2.5.tar.gz 14574347 BLAKE2B d456dd493e79640260f3ad3c964fdaaa26dd7bdc8d5676bd70f9dd143647c62b63aba2052e7f223041b7dd6859cd923398ad22f9d2d1302b8f18b4c69fe7aafb SHA512 95445dff498bea2bc8e3f32749131302481166c8591f11a5f76a7786c3286cb608049a743bc4878c8fbd4e4d22d4949f243f57f1e53725e7076d39aea5ceea20
DIST salt-3000.2-py38-misc.patch.gz 6250 BLAKE2B 68fff80a042e6bf208ea2d9692da7a7b1e29572f1ec3c850c14743bbf2821d231f933ec4e6d6eaad12acee0b7666888a37a72872b2b082c92d8db9de988fbbec SHA512 6d4a66323a423e630f7cc73b566ed96c452c8fc3d72c25a2dd86033c4774c1c8e8b8701e1d4ee92994d4148c398d704f419023e26d8b40c8fdd63f9d79d9d52f
DIST salt-3000.2.tar.gz 15231513 BLAKE2B 2090d0f52f953a42f1685ad190750e9c76ad6e862a3272444fef063a7605f69a6c542f04165a41fb9cdaa126a878cc133d4857faa70edc5eac4bf49bdde937ab SHA512 88e8876ed8cd18e942c2194686cda68f40fa49e69e317ca488bf58e095bcf6cdf8771d93eba7960038941cc5863e13a4eea4dad5256c12da7cd8288a2c61f59d
DIST salt-3000.3.tar.gz 15237557 BLAKE2B ab51e07f56f9e02c47da58fad95c9482ea70e0685996a78e34382eadb3a9a3dace63ef65d643a9de284ea00c34785eae631d033f32e00e59eb3639514459af33 SHA512 a4697da9a2f7d484b72145e8b83f6d9032369f87e2e7119a9d51f59b989488285406543f79142fc686c41c144f5878eefba37927137581c892c88f03fc3a8208
diff --git a/app-admin/salt/files/salt-2019.2.0-remove-raet-tests.patch b/app-admin/salt/files/salt-2019.2.0-remove-raet-tests.patch
new file mode 100644
index 00000000000..fab9f38df77
--- /dev/null
+++ b/app-admin/salt/files/salt-2019.2.0-remove-raet-tests.patch
@@ -0,0 +1,43 @@
+diff --git a/tests/unit/modules/test_event.py b/tests/unit/modules/test_event.py
+index e5d2c946ae..e9140670cb 100644
+--- a/tests/unit/modules/test_event.py
++++ b/tests/unit/modules/test_event.py
+@@ -47,12 +47,6 @@ class EventTestCase(TestCase, LoaderModuleMockMixin):
+ preload = {'id': 'id', 'tag': 'tag', 'data': 'data',
+ 'tok': 'salt', 'cmd': '_minion_event'}
+
+- with patch.dict(event.__opts__, {'transport': 'raet',
+- 'local': False}):
+- with patch.object(salt_transport_channel_factory, 'send',
+- return_value=None):
+- self.assertTrue(event.fire_master('data', 'tag'))
+-
+ with patch.dict(event.__opts__, {'transport': 'A',
+ 'master_uri': 'localhost',
+ 'local': False}):
+diff --git a/tests/unit/utils/test_verify.py b/tests/unit/utils/test_verify.py
+index 63b9ae3181..2c8294ef77 100644
+--- a/tests/unit/utils/test_verify.py
++++ b/tests/unit/utils/test_verify.py
+@@ -326,7 +326,7 @@ class TestVerifyLog(TestCase):
+ verify_log_files([path], getpass.getuser())
+ self.assertTrue(os.path.exists(path))
+
+-
++@skipIf(True, "broken under sandbox")
+ class TestCleanPath(TestCase):
+ '''
+ salt.utils.clean_path works as expected
+@@ -396,10 +396,10 @@ class TestCleanPathLink(TestCase):
+ 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)
++ assert ret == os.path.realpath(expect_path), "{} is not {}".format(ret, expect_path)
+
+ 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')
+ ret = clean_path(self.from_path, test_path)
+- assert ret == expect_path, "{} is not {}".format(ret, expect_path)
++ assert ret == os.path.realpath(expect_path), "{} is not {}".format(ret, expect_path)
diff --git a/app-admin/salt/files/salt-2019.2.0-tests.patch b/app-admin/salt/files/salt-2019.2.0-tests.patch
new file mode 100644
index 00000000000..830fcbffe36
--- /dev/null
+++ b/app-admin/salt/files/salt-2019.2.0-tests.patch
@@ -0,0 +1,73 @@
+diff --git a/tests/unit/fileserver/test_gitfs.py b/tests/unit/fileserver/test_gitfs.py
+index 4e93df4e62..38c13efb6b 100644
+--- a/tests/unit/fileserver/test_gitfs.py
++++ b/tests/unit/fileserver/test_gitfs.py
+@@ -151,6 +151,7 @@ class GitfsConfigTestCase(TestCase, LoaderModuleMockMixin):
+ if exc.errno != errno.EEXIST:
+ raise
+
++ @skipIf(True, 'currently failing on Gentoo')
+ def test_per_saltenv_config(self):
+ opts_override = textwrap.dedent('''
+ gitfs_root: salt
+diff --git a/tests/unit/grains/test_core.py b/tests/unit/grains/test_core.py
+index 445df0c98a..17ca123172 100644
+--- a/tests/unit/grains/test_core.py
++++ b/tests/unit/grains/test_core.py
+@@ -710,6 +710,7 @@ class CoreGrainsTestCase(TestCase, LoaderModuleMockMixin):
+ )
+
+ @skipIf(not salt.utils.platform.is_linux(), 'System is not Linux')
++ @skipIf(True, 'Test assumes running under Xen')
+ def test_xen_virtual(self):
+ '''
+ Test if OS grains are parsed correctly in Ubuntu Xenial Xerus
+diff --git a/tests/unit/utils/test_asynchronous.py b/tests/unit/utils/test_asynchronous.py
+index 694a7aebfe..704f2d894f 100644
+--- a/tests/unit/utils/test_asynchronous.py
++++ b/tests/unit/utils/test_asynchronous.py
+@@ -3,6 +3,8 @@
+ # Import Python Libs
+ from __future__ import absolute_import, print_function, unicode_literals
+
++from unittest import skipIf
++
+ # Import 3rd-party libs
+ import tornado.testing
+ import tornado.gen
+@@ -35,6 +37,7 @@ class HelperB(object):
+
+
+ class TestSyncWrapper(AsyncTestCase):
++ @skipIf(True, "fails in sandbox")
+ @tornado.testing.gen_test
+ def test_helpers(self):
+ '''
+@@ -56,6 +59,7 @@ class TestSyncWrapper(AsyncTestCase):
+ ret = sync.sleep()
+ self.assertTrue(ret)
+
++ @skipIf(True, "fails in sandbox")
+ def test_double(self):
+ '''
+ Test when the asynchronous wrapper object itself creates a wrap of another thing
+@@ -67,6 +71,7 @@ class TestSyncWrapper(AsyncTestCase):
+ ret = sync.sleep()
+ self.assertFalse(ret)
+
++ @skipIf(True, "fails in sandbox")
+ def test_double_sameloop(self):
+ '''
+ Test asynchronous wrappers initiated from the same IOLoop, to ensure that
+diff --git a/tests/unit/utils/test_jinja.py b/tests/unit/utils/test_jinja.py
+index da666ef4c7..e3523049b7 100644
+--- a/tests/unit/utils/test_jinja.py
++++ b/tests/unit/utils/test_jinja.py
+@@ -1102,6 +1102,7 @@ class TestCustomExtensions(TestCase):
+ dict(opts=self.local_opts, saltenv='test', salt=self.local_salt))
+ self.assertEqual(rendered, '16777216')
+
++ @skipIf(True, 'Skipping tests that require internet access')
+ @flaky
+ def test_http_query(self):
+ '''
diff --git a/app-admin/salt/files/salt-2019.2.2-newer-deps.patch b/app-admin/salt/files/salt-2019.2.2-newer-deps.patch
new file mode 100644
index 00000000000..ee3bc060417
--- /dev/null
+++ b/app-admin/salt/files/salt-2019.2.2-newer-deps.patch
@@ -0,0 +1,136 @@
+diff --git a/salt/modules/dockercompose.py b/salt/modules/dockercompose.py
+index 61e937536c..0f37e0d43a 100644
+--- a/salt/modules/dockercompose.py
++++ b/salt/modules/dockercompose.py
+@@ -241,7 +241,7 @@ def __load_docker_compose(path):
+ None, None)
+ try:
+ with salt.utils.files.fopen(file_path, 'r') as fl:
+- loaded = yaml.load(fl)
++ loaded = yaml.safe_load(fl)
+ except EnvironmentError:
+ return None, __standardize_result(False,
+ 'Could not read {0}'.format(file_path),
+@@ -371,7 +371,7 @@ def __load_compose_definitions(path, definition):
+ None, None)
+ else:
+ try:
+- loaded_definition = yaml.load(definition)
++ loaded_definition = yaml.safe_load(definition)
+ except yaml.YAMLError as yerr:
+ msg = 'Could not parse {0} {1}'.format(definition, yerr)
+ return None, None, __standardize_result(False, msg,
+diff --git a/tests/integration/utils/test_win_runas.py b/tests/integration/utils/test_win_runas.py
+index 3042a77991..d4057a4d03 100644
+--- a/tests/integration/utils/test_win_runas.py
++++ b/tests/integration/utils/test_win_runas.py
+@@ -539,7 +539,7 @@ class RunAsTest(ModuleCase):
+ win32serviceutil.StartService('test service')
+ wait_for_service('test service')
+ with salt.utils.files.fopen(RUNAS_OUT, 'r') as fp:
+- ret = yaml.load(fp)
++ ret = yaml.safe_load(fp)
+ assert ret['retcode'] == 1, ret
+
+ @with_system_user('test-runas', on_existing='delete', delete=True,
+@@ -560,7 +560,7 @@ class RunAsTest(ModuleCase):
+ win32serviceutil.StartService('test service')
+ wait_for_service('test service')
+ with salt.utils.files.fopen(RUNAS_OUT, 'r') as fp:
+- ret = yaml.load(fp)
++ ret = yaml.safe_load(fp)
+ assert ret['retcode'] == 1, ret
+
+ @with_system_user('test-runas-admin', on_existing='delete', delete=True,
+@@ -581,7 +581,7 @@ class RunAsTest(ModuleCase):
+ win32serviceutil.StartService('test service')
+ wait_for_service('test service')
+ with salt.utils.files.fopen(RUNAS_OUT, 'r') as fp:
+- ret = yaml.load(fp)
++ ret = yaml.safe_load(fp)
+ assert ret['retcode'] == 0, ret
+
+ @with_system_user('test-runas-admin', on_existing='delete', delete=True,
+@@ -602,7 +602,7 @@ class RunAsTest(ModuleCase):
+ win32serviceutil.StartService('test service')
+ wait_for_service('test service')
+ with salt.utils.files.fopen(RUNAS_OUT, 'r') as fp:
+- ret = yaml.load(fp)
++ ret = yaml.safe_load(fp)
+ assert ret['retcode'] == 0, ret
+
+ def test_runas_service_system_user(self):
+@@ -621,5 +621,5 @@ class RunAsTest(ModuleCase):
+ win32serviceutil.StartService('test service')
+ wait_for_service('test service')
+ with salt.utils.files.fopen(RUNAS_OUT, 'r') as fp:
+- ret = yaml.load(fp)
++ ret = yaml.safe_load(fp)
+ assert ret['retcode'] == 0, ret
+diff --git a/tests/unit/utils/test_schema.py b/tests/unit/utils/test_schema.py
+index a07fcbab6b..79072bb89e 100644
+--- a/tests/unit/utils/test_schema.py
++++ b/tests/unit/utils/test_schema.py
+@@ -5,6 +5,7 @@
+
+ # Import python libs
+ from __future__ import absolute_import, print_function, unicode_literals
++import sys
+ import copy
+
+ # Import Salt Testing Libs
+@@ -506,10 +507,7 @@ class ConfigTestCase(TestCase):
+ {'personal_access_token': 'foo'},
+ Requirements.serialize()
+ )
+- if JSONSCHEMA_VERSION >= _LooseVersion('3.0.0'):
+- self.assertIn('\'ssh_key_file\' is a required property', excinfo.exception.message)
+- else:
+- self.assertIn('is not valid under any of the given schemas', excinfo.exception.message)
++ self.assertIn('\'ssh_key_file\' is a required property', excinfo.exception.message)
+
+ def test_boolean_config(self):
+ item = schema.BooleanItem(title='Hungry', description='Are you hungry?')
+@@ -1733,10 +1731,11 @@ class ConfigTestCase(TestCase):
+
+ with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
+ jsonschema.validate({'item': {'sides': '4', 'color': 'blue'}}, TestConf.serialize())
+- if JSONSCHEMA_VERSION >= _LooseVersion('3.0.0'):
+- self.assertIn('\'4\' is not of type \'boolean\'', excinfo.exception.message)
++
++ if sys.hexversion >= 0x03000000:
++ self.assertIn("'4' is not of type 'boolean'", excinfo.exception.message)
+ else:
+- self.assertIn('is not valid under any of the given schemas', excinfo.exception.message)
++ self.assertIn("u'4' is not of type u'boolean'", excinfo.exception.message)
+
+ class TestConf(schema.Schema):
+ item = schema.DictItem(
+@@ -1839,10 +1838,10 @@ class ConfigTestCase(TestCase):
+
+ with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
+ jsonschema.validate({'item': ['maybe']}, TestConf.serialize())
+- if JSONSCHEMA_VERSION >= _LooseVersion('3.0.0'):
+- self.assertIn('\'maybe\' is not one of [\'yes\']', excinfo.exception.message)
++ if sys.hexversion >= 0x03000000:
++ self.assertIn("'maybe' is not one of ['yes']", excinfo.exception.message)
+ else:
+- self.assertIn('is not valid under any of the given schemas', excinfo.exception.message)
++ self.assertIn("u'maybe' is not one of [u'yes']", excinfo.exception.message)
+
+ with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
+ jsonschema.validate({'item': 2}, TestConf.serialize())
+@@ -1894,10 +1893,10 @@ class ConfigTestCase(TestCase):
+
+ with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
+ jsonschema.validate({'item': ['maybe']}, TestConf.serialize())
+- if JSONSCHEMA_VERSION >= _LooseVersion('3.0.0'):
+- self.assertIn('\'maybe\' is not one of [\'yes\']', excinfo.exception.message)
++ if sys.hexversion >= 0x03000000:
++ self.assertIn("'maybe' is not one of ['yes']", excinfo.exception.message)
+ else:
+- self.assertIn('is not valid under any of the given schemas', excinfo.exception.message)
++ self.assertIn("u'maybe' is not one of [u'yes']", excinfo.exception.message)
+
+ with self.assertRaises(jsonschema.exceptions.ValidationError) as excinfo:
+ jsonschema.validate({'item': 2}, TestConf.serialize())
diff --git a/app-admin/salt/files/salt-2019.2.2-workaround-broken-mock-on-py2.patch b/app-admin/salt/files/salt-2019.2.2-workaround-broken-mock-on-py2.patch
new file mode 100644
index 00000000000..8d28fe7f16a
--- /dev/null
+++ b/app-admin/salt/files/salt-2019.2.2-workaround-broken-mock-on-py2.patch
@@ -0,0 +1,28 @@
+diff --git a/tests/unit/utils/test_network.py b/tests/unit/utils/test_network.py
+index af5cbbab2b..15236c127a 100644
+--- a/tests/unit/utils/test_network.py
++++ b/tests/unit/utils/test_network.py
+@@ -1,6 +1,7 @@
+ # -*- coding: utf-8 -*-
+ # Import Python libs
+ from __future__ import absolute_import, unicode_literals, print_function
++import sys
+ import logging
+ import socket
+ import textwrap
+@@ -249,6 +250,7 @@ class NetworkTestCase(TestCase):
+ log.error('bad host_port value: "%s" failed to trigger ValueError exception', host_port)
+ raise _e_
+
++ @skipIf(sys.hexversion < 0x03000000, "https://github.com/testing-cabal/mock/issues/323")
+ def test_dns_check(self):
+ hosts = [
+ {'host': '10.10.0.3',
+@@ -302,6 +304,7 @@ class NetworkTestCase(TestCase):
+ "Invalid or unresolveable address"):
+ network.dns_check('foo', '1')
+
++ @skipIf(sys.hexversion < 0x03000000, "https://github.com/testing-cabal/mock/issues/323")
+ def test_test_addrs(self):
+ # subset of real data from getaddrinfo against saltstack.com
+ addrinfo = [(30, 2, 17, '', ('2600:9000:21eb:a800:8:1031:abc0:93a1', 0, 0, 0)),
diff --git a/app-admin/salt/salt-2019.2.5-r1.ebuild b/app-admin/salt/salt-2019.2.5-r1.ebuild
new file mode 100644
index 00000000000..e39bedf1898
--- /dev/null
+++ b/app-admin/salt/salt-2019.2.5-r1.ebuild
@@ -0,0 +1,150 @@
+# Copyright 1999-2020 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+PYTHON_COMPAT=( python3_6 )
+DISTUTILS_USE_SETUPTOOLS=bdepend
+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="git://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 ~x86"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb neutron nova
+ openssl portage profile redis selinux test vim-syntax"
+
+RDEPEND="
+ sys-apps/pciutils
+ dev-python/jinja[${PYTHON_USEDEP}]
+ dev-python/libnacl[${PYTHON_USEDEP}]
+ >=dev-python/msgpack-0.3[${PYTHON_USEDEP}]
+ <dev-python/msgpack-1.0[${PYTHON_USEDEP}]
+ dev-python/pyyaml[${PYTHON_USEDEP}]
+ dev-python/markupsafe[${PYTHON_USEDEP}]
+ dev-python/pycryptodome[${PYTHON_USEDEP}]
+ >=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+ >=dev-python/requests-1.0.0[${PYTHON_USEDEP}]
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ >=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+ <www-servers/tornado-5.0[${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? ( dev-python/libvirt-python[${PYTHON_USEDEP}] )
+ openssl? (
+ dev-libs/openssl:0=[-bindist]
+ dev-python/pyopenssl[${PYTHON_USEDEP}]
+ )
+ cherrypy? ( >=dev-python/cherrypy-3.2.2[${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? ( >=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 )"
+BDEPEND="
+ dev-python/setuptools[${PYTHON_USEDEP}]
+ test? (
+ >=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/mock-2.0.0[${PYTHON_USEDEP}]
+ >=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+ dev-python/pip[${PYTHON_USEDEP}]
+ dev-python/pytest-helpers-namespace[${PYTHON_USEDEP}]
+ >=dev-python/pytest-salt-2018.12.8[${PYTHON_USEDEP}]
+ <dev-python/pytest-salt-2020.0.0[${PYTHON_USEDEP}]
+ dev-python/psutil[${PYTHON_USEDEP}]
+ dev-python/pytest[${PYTHON_USEDEP}]
+ >=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+ dev-python/virtualenv[${PYTHON_USEDEP}]
+ !x86? ( >=dev-python/boto3-1.2.1[${PYTHON_USEDEP}] )
+ ${RDEPEND}
+ )"
+
+DOCS=( README.rst AUTHORS )
+
+RESTRICT="!test? ( test ) x86? ( test )"
+
+PATCHES=(
+ "${FILESDIR}/salt-2017.7.0-dont-realpath-tmpdir.patch"
+ "${FILESDIR}/salt-2019.2.0-tests.patch"
+ "${FILESDIR}/salt-2019.2.0-skip-tests-that-oom-machine.patch"
+ "${FILESDIR}/salt-2019.2.2-newer-deps.patch"
+ "${FILESDIR}/salt-2019.2.2-workaround-broken-mock-on-py2.patch"
+ "${FILESDIR}/salt-2019.2.0-remove-raet-tests.patch"
+)
+
+python_prepare() {
+ # remove tests with external dependencies that may not be available
+ rm tests/unit/{test_zypp_plugins.py,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
+
+ # breaks with permission errors
+ rm tests/unit/utils/test_cache.py || die
+
+ # remove raet due to deps being dropped
+ rm tests/unit/modules/test_raet_publish.py \
+ salt/transport/raet.py \
+ salt/daemons/test/test_raetkey.py || die
+
+ # allow the use of the renamed msgpack
+ sed -i '/^msgpack/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-4 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}")"
+ mkdir "${BUILD_DIR}"/../{templates,conf/cloud.{providers,profiles,maps}.d} || die
+
+ (
+ cleanup() { rm -f "${tempdir}" || die; }
+
+ trap cleanup EXIT
+
+ addwrite "${tempdir}"
+ ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}" || die
+
+ USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+ TMPDIR="${tempdir}" \
+ ${EPYTHON} tests/runtests.py \
+ --unit-tests --no-report --verbose \
+ || die "testing failed with ${EPYTHON}"
+ )
+}