public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
From: "Patrick McLean" <chutzpah@gentoo.org>
To: gentoo-commits@lists.gentoo.org
Subject: [gentoo-commits] repo/gentoo:master commit in: app-admin/salt/, app-admin/salt/files/
Date: Thu, 16 Jun 2016 23:43:09 +0000 (UTC)	[thread overview]
Message-ID: <1466120582.f39161cfeb4839082034ab3130d54aec390ee4a1.chutzpah@gentoo> (raw)

commit:     f39161cfeb4839082034ab3130d54aec390ee4a1
Author:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
AuthorDate: Thu Jun 16 23:42:40 2016 +0000
Commit:     Patrick McLean <chutzpah <AT> gentoo <DOT> org>
CommitDate: Thu Jun 16 23:43:02 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f39161cf

app-admin/salt: Version bump to 2016.3.1

Package-Manager: portage-2.3.0_rc1

 app-admin/salt/Manifest                            |   1 +
 .../salt/files/salt-2016.3.1-broken-tests.patch    | 221 +++++++++++++++++++++
 .../files/salt-2016.3.1-dont-realpath-tmpdir.patch |  18 ++
 app-admin/salt/salt-2016.3.1.ebuild                | 141 +++++++++++++
 4 files changed, 381 insertions(+)

diff --git a/app-admin/salt/Manifest b/app-admin/salt/Manifest
index 887c12a..ad9d2e3 100644
--- a/app-admin/salt/Manifest
+++ b/app-admin/salt/Manifest
@@ -2,3 +2,4 @@ DIST salt-2015.5.10.tar.gz 5693422 SHA256 863a96e70f8521af35fe11b10d25b3205a0bfb
 DIST salt-2015.5.9.tar.gz 5689839 SHA256 71e1c31ebe73edf17b43afcee7de689bb39cc6e97742cd0e110386106fa3fc5b SHA512 389fa09e2e89bb0631f5a2f1d7ef363f8b3a260d466cd7b5fdf7bfc296f5fb64fa355dc56a401df326cefe43e63904061db4fc01a3b5c1cd54fa34ee102a6ad9 WHIRLPOOL 094350e78b96c2633dedb2c4ab0caa959a634e84bf2e92145880eec883ec076765c8b897c873e8f601325a69e7e3fe139163eec45fc6daa109edbd9a884b0dc2
 DIST salt-2015.8.10.tar.gz 6972776 SHA256 4a81273ab4b01e0f1d29b28ab99a16eb94e5c430107b05491c94f3baf8b95c99 SHA512 e00eb6535defd883ed789b4b27fae020a8225cd1a3dd05cfa92d6320a4fe6930ecddf9914a572f64715656126107d61920d1b989451caa7ccdb28d969c41c64c WHIRLPOOL fa6beaee47c604cc1398ed803662dbd340cf9ab20664af6c903d7376abd3253522798c73c83b0c5b00f0db72fb4be20dae074c6d6fdd39026485f5050f108b2a
 DIST salt-2015.8.8.tar.gz 6982904 SHA256 b2ecce7bf562cfcd6586d66ade278f268bb89023f0fa0accaa55f90b8a668ef5 SHA512 add65951694bc9e3aaa6db69bf9ac7ed32a5c42822ae34281ca3ea1e7f393235cd6baa1905362d177c62505a514e1c4599751e1a8a913cc334f9ebe1d4ab7ed3 WHIRLPOOL 9d81b6153019ff0862c6ee0e3fa949810e8066798aabcc94f2b87893f51906e0e19e37aa26023ea578eb10ebb9816d30d12104fdc5018c7ce91790bd617b2bba
+DIST salt-2016.3.1.tar.gz 7932479 SHA256 e6bdba4693116430c2af57497eb63399e3a139ac0a7016fa0870b49fbe987f75 SHA512 74122020a83df79171b9aa3bc311d1b16930140ec6b063c888d41e10fb8e696f69188b62cf925045b40d8b8fe713759de08978b08bc3b8e1f12722de3a8ddb7b WHIRLPOOL f76afb4d9c6678edf48b608f6dbd27201656fd371b0df78a8a8db306a2cbf5b08fa2fd916e9fb5409b67cd05ab007a3684d91c1e0158416b12f014001de1506a

diff --git a/app-admin/salt/files/salt-2016.3.1-broken-tests.patch b/app-admin/salt/files/salt-2016.3.1-broken-tests.patch
new file mode 100644
index 0000000..bb4b341
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.1-broken-tests.patch
@@ -0,0 +1,221 @@
+diff --git a/tests/unit/auth_test.py b/tests/unit/auth_test.py
+index 84e8699..5acd6c9 100644
+--- a/tests/unit/auth_test.py
++++ b/tests/unit/auth_test.py
+@@ -50,22 +50,6 @@ class LoadAuthTestCase(TestCase):
+             ret = self.lauth.load_name(valid_eauth_load)
+             format_call_mock.assert_has_calls((expected_ret,), any_order=True)
+ 
+-    def test_get_groups(self):
+-        valid_eauth_load = {'username': 'test_user',
+-                            'show_timeout': False,
+-                            'test_password': '',
+-                            'eauth': 'pam'}
+-        with patch('salt.utils.format_call') as format_call_mock:
+-            expected_ret = call('fake_groups_function_str', {
+-                'username': 'test_user',
+-                'test_password': '',
+-                'show_timeout': False,
+-                'eauth': 'pam'
+-                }, expected_extra_kws=auth.AUTH_INTERNAL_KEYWORDS)
+-            self.lauth.get_groups(valid_eauth_load)
+-            format_call_mock.assert_has_calls((expected_ret,), any_order=True)
+-
+-
+ @patch('zmq.Context', MagicMock())
+ @patch('salt.payload.Serial.dumps', MagicMock())
+ @patch('salt.master.tagify', MagicMock())
+diff --git a/tests/unit/modules/boto_secgroup_test.py b/tests/unit/modules/boto_secgroup_test.py
+index cc88568..07fd8ec 100644
+--- a/tests/unit/modules/boto_secgroup_test.py
++++ b/tests/unit/modules/boto_secgroup_test.py
+@@ -192,30 +192,6 @@ class BotoSecgroupTestCase(TestCase):
+                                                         **conn_parameters)
+         self.assertEqual(group_vpc.id, retrieved_group_id)
+ 
+-    @mock_ec2
+-    def test_get_config_single_rule_group_name(self):
+-        '''
+-        tests return of 'config' when given group name. get_config returns an OrderedDict.
+-        '''
+-        group_name = _random_group_name()
+-        ip_protocol = u'tcp'
+-        from_port = 22
+-        to_port = 22
+-        cidr_ip = u'0.0.0.0/0'
+-        rules_egress = [{'to_port': -1, 'from_port': -1, 'ip_protocol': u'-1', 'cidr_ip': u'0.0.0.0/0'}]
+-
+-        conn = boto.ec2.connect_to_region(region, **boto_conn_parameters)
+-        group = conn.create_security_group(name=group_name, description=group_name)
+-        group.authorize(ip_protocol=ip_protocol, from_port=from_port, to_port=to_port, cidr_ip=cidr_ip)
+-        # setup the expected get_config result
+-        expected_get_config_result = OrderedDict([('name', group.name), ('group_id', group.id), ('owner_id', u'111122223333'),
+-                                                 ('description', group.description), ('tags', {}),
+-                                                 ('rules', [{'to_port': to_port, 'from_port': from_port,
+-                                                  'ip_protocol': ip_protocol, 'cidr_ip': cidr_ip}]),
+-                                                 ('rules_egress', rules_egress)])
+-        secgroup_get_config_result = boto_secgroup.get_config(group_id=group.id, **conn_parameters)
+-        self.assertEqual(expected_get_config_result, secgroup_get_config_result)
+-
+     @skipIf(True, 'test skipped due to error in moto return - fixed in '
+                   'https://github.com/spulec/moto/commit/cc0166964371f7b5247a49d45637a8f936ccbe6f')
+     @mock_ec2
+diff --git a/tests/unit/modules/cron_test.py b/tests/unit/modules/cron_test.py
+index fd9b62d..8445471 100644
+--- a/tests/unit/modules/cron_test.py
++++ b/tests/unit/modules/cron_test.py
+@@ -630,16 +630,6 @@ class PsTestCase(TestCase):
+     def test_list_tab(self):
+         self.assertDictEqual(STUB_SIMPLE_CRON_DICT, cron.list_tab('DUMMY_USER'))
+ 
+-    @patch('salt.modules.cron._write_cron_lines')
+-    @patch('salt.modules.cron.list_tab', new=MagicMock(return_value=STUB_SIMPLE_CRON_DICT))
+-    def test_set_special(self, write_cron_lines_mock):
+-        expected_write_call = call('DUMMY_USER',
+-                                   ['5 0 * * * /tmp/no_script.sh\n',
+-                                    '# Lines below here are managed by Salt, do not edit\n',
+-                                    '@hourly echo Hi!\n'])
+-        ret = cron.set_special('DUMMY_USER', '@hourly', 'echo Hi!')
+-        write_cron_lines_mock.assert_has_calls((expected_write_call,), any_order=True)
+-
+     def test__get_cron_date_time(self):
+         ret = cron._get_cron_date_time(minute=STUB_CRON_TIMESTAMP['minute'],
+                                     hour=STUB_CRON_TIMESTAMP['hour'],
+diff --git a/tests/unit/modules/linux_sysctl_test.py b/tests/unit/modules/linux_sysctl_test.py
+index 89bea83..49851cb 100644
+--- a/tests/unit/modules/linux_sysctl_test.py
++++ b/tests/unit/modules/linux_sysctl_test.py
+@@ -85,18 +85,6 @@ class LinuxSysctlTestCase(TestCase):
+                 'net.ipv4.ip_forward', 1), ret)
+ 
+     @patch('os.path.isfile', MagicMock(return_value=False))
+-    def test_persist_no_conf_failure(self):
+-        '''
+-        Tests adding of config file failure
+-        '''
+-        with patch('salt.utils.fopen', mock_open()) as m_open:
+-            helper_open = m_open()
+-            helper_open.write.assertRaises(CommandExecutionError,
+-                                           linux_sysctl.persist,
+-                                           'net.ipv4.ip_forward',
+-                                           1, config=None)
+-
+-    @patch('os.path.isfile', MagicMock(return_value=False))
+     @patch('os.path.exists', MagicMock(return_value=True))
+     def test_persist_no_conf_success(self):
+         '''
+diff --git a/tests/unit/modules/mac_sysctl_test.py b/tests/unit/modules/mac_sysctl_test.py
+index e90ec64..b2ea691 100644
+--- a/tests/unit/modules/mac_sysctl_test.py
++++ b/tests/unit/modules/mac_sysctl_test.py
+@@ -67,18 +67,6 @@ class DarwinSysctlTestCase(TestCase):
+                 'net.inet.icmp.icmplim', 50), ret)
+ 
+     @patch('os.path.isfile', MagicMock(return_value=False))
+-    def test_persist_no_conf_failure(self):
+-        '''
+-        Tests adding of config file failure
+-        '''
+-        with patch('salt.utils.fopen', mock_open()) as m_open:
+-            helper_open = m_open()
+-            helper_open.write.assertRaises(CommandExecutionError,
+-                                           mac_sysctl.persist,
+-                                           'net.inet.icmp.icmplim',
+-                                           50, config=None)
+-
+-    @patch('os.path.isfile', MagicMock(return_value=False))
+     def test_persist_no_conf_success(self):
+         '''
+         Tests successful add of config file when previously not one
+diff --git a/tests/unit/modules/mount_test.py b/tests/unit/modules/mount_test.py
+index 9c4ad6f..bf00c8e 100644
+--- a/tests/unit/modules/mount_test.py
++++ b/tests/unit/modules/mount_test.py
+@@ -102,23 +102,6 @@ class MountTestCase(TestCase):
+                                                        'opts': ['D', 'E', 'F'],
+                                                        'pass': 'H'}})
+ 
+-    def test_rm_fstab(self):
+-        '''
+-        Remove the mount point from the fstab
+-        '''
+-        mock_fstab = MagicMock(return_value={})
+-        with patch.object(mount, 'fstab', mock_fstab):
+-            with patch('salt.utils.fopen', mock_open()):
+-                self.assertTrue(mount.rm_fstab('name', 'device'))
+-
+-        mock_fstab = MagicMock(return_value={'name': 'name'})
+-        with patch.object(mount, 'fstab', mock_fstab):
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                               mount.rm_fstab,
+-                                               config=None)
+-
+     def test_set_fstab(self):
+         '''
+         Tests to verify that this mount is represented in the fstab,
+@@ -143,22 +126,6 @@ class MountTestCase(TestCase):
+                        mock_open(read_data=MOCK_SHELL_FILE)):
+                 self.assertEqual(mount.set_fstab('A', 'B', 'C'), 'new')
+ 
+-    def test_rm_automaster(self):
+-        '''
+-        Remove the mount point from the auto_master
+-        '''
+-        mock = MagicMock(return_value={})
+-        with patch.object(mount, 'automaster', mock):
+-            self.assertTrue(mount.rm_automaster('name', 'device'))
+-
+-        mock = MagicMock(return_value={'name': 'name'})
+-        with patch.object(mount, 'fstab', mock):
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                               mount.rm_automaster,
+-                                               'name', 'device')
+-
+     def test_set_automaster(self):
+         '''
+         Verify that this mount is represented in the auto_salt, change the mount
+diff --git a/tests/unit/modules/puppet_test.py b/tests/unit/modules/puppet_test.py
+index 02bc2e1..249efcb 100644
+--- a/tests/unit/modules/puppet_test.py
++++ b/tests/unit/modules/puppet_test.py
+@@ -72,24 +72,6 @@ class PuppetTestCase(TestCase):
+ 
+             self.assertFalse(puppet.enable())
+ 
+-    def test_disable(self):
+-        '''
+-            Test to disable the puppet agent
+-        '''
+-        mock_lst = MagicMock(return_value=[])
+-        with patch.dict(puppet.__salt__, {'cmd.run': mock_lst}):
+-            mock = MagicMock(side_effect=[True, False])
+-            with patch.object(os.path, 'isfile', mock):
+-                self.assertFalse(puppet.disable())
+-
+-                with patch('salt.utils.fopen', mock_open()):
+-                    self.assertTrue(puppet.disable())
+-
+-                with patch('salt.utils.fopen', mock_open()) as m_open:
+-                    helper_open = m_open()
+-                    helper_open.write.assertRaises(CommandExecutionError,
+-                                                    puppet.disable)
+-
+     def test_status(self):
+         '''
+             Test to display puppet agent status
+@@ -144,11 +126,6 @@ class PuppetTestCase(TestCase):
+                         mock_open(read_data="resources: 1")):
+                 self.assertDictEqual(puppet.summary(), {'resources': 1})
+ 
+-            with patch('salt.utils.fopen', mock_open()) as m_open:
+-                helper_open = m_open()
+-                helper_open.write.assertRaises(CommandExecutionError,
+-                                                puppet.summary)
+-
+     def test_plugin_sync(self):
+         '''
+             Test to runs a plugin synch between the puppet master and agent

diff --git a/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
new file mode 100644
index 0000000..3e4fa31
--- /dev/null
+++ b/app-admin/salt/files/salt-2016.3.1-dont-realpath-tmpdir.patch
@@ -0,0 +1,18 @@
+diff --git a/tests/integration/__init__.py b/tests/integration/__init__.py
+index fc13bb6..6316fb5 100644
+--- a/tests/integration/__init__.py
++++ b/tests/integration/__init__.py
+@@ -77,12 +77,7 @@ if salt.utils.is_windows():
+     import win32api
+ 
+ 
+-SYS_TMP_DIR = 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 salt.utils.is_darwin() else '/tmp'
+-)
++SYS_TMP_DIR = os.environ.get('TMPDIR', tempfile.gettempdir()) if not salt.utils.is_darwin() else '/tmp'
+ TMP = os.path.join(SYS_TMP_DIR, 'salt-tests-tmpdir')
+ FILES = os.path.join(INTEGRATION_TEST_DIR, 'files')
+ PYEXEC = 'python{0}.{1}'.format(*sys.version_info)

diff --git a/app-admin/salt/salt-2016.3.1.ebuild b/app-admin/salt/salt-2016.3.1.ebuild
new file mode 100644
index 0000000..3df29d3
--- /dev/null
+++ b/app-admin/salt/salt-2016.3.1.ebuild
@@ -0,0 +1,141 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+PYTHON_COMPAT=(python2_7)
+
+inherit eutils systemd distutils-r1
+
+DESCRIPTION="Salt is a remote execution and configuration manager"
+HOMEPAGE="http://saltstack.org/"
+
+if [[ ${PV} == 9999* ]]; then
+	inherit git-r3
+	EGIT_REPO_URI="git://github.com/${PN}stack/${PN}.git"
+	EGIT_BRANCH="develop"
+	SRC_URI=""
+	KEYWORDS=""
+else
+	SRC_URI="mirror://pypi/${PN:0:1}/${PN}/${P}.tar.gz"
+	KEYWORDS="~x86 ~amd64"
+fi
+
+LICENSE="Apache-2.0"
+SLOT="0"
+IUSE="cherrypy ldap libcloud libvirt gnupg keyring mako mongodb mysql neutron nova"
+IUSE+=" openssl profile redis selinux test timelib raet +zeromq vim-syntax"
+
+RDEPEND="sys-apps/pciutils
+	dev-python/jinja[${PYTHON_USEDEP}]
+	>=dev-python/msgpack-0.3[${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}]
+	>=www-servers/tornado-4.2.1[${PYTHON_USEDEP}]
+	virtual/python-futures[${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:*[-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}]
+	)
+	zeromq? (
+		>=dev-python/pyzmq-2.2.0[${PYTHON_USEDEP}]
+		>=dev-python/pycrypto-2.6.1[${PYTHON_USEDEP}]
+	)
+	cherrypy? ( >=dev-python/cherrypy-3.2.2[${PYTHON_USEDEP}] )
+	mongodb? ( dev-python/pymongo[${PYTHON_USEDEP}] )
+	keyring? ( dev-python/keyring[${PYTHON_USEDEP}] )
+	mysql? ( dev-python/mysql-python[${PYTHON_USEDEP}] )
+	redis? ( dev-python/redis-py[${PYTHON_USEDEP}] )
+	selinux? ( sec-policy/selinux-salt )
+	timelib? ( dev-python/timelib[${PYTHON_USEDEP}] )
+	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 )"
+DEPEND="dev-python/setuptools[${PYTHON_USEDEP}]
+	test? (
+		dev-python/psutil[${PYTHON_USEDEP}]
+		dev-python/pip[${PYTHON_USEDEP}]
+		dev-python/virtualenv[${PYTHON_USEDEP}]
+		dev-python/mock[${PYTHON_USEDEP}]
+		dev-python/timelib[${PYTHON_USEDEP}]
+		>=dev-python/boto-2.32.1[${PYTHON_USEDEP}]
+		!x86? ( dev-python/boto3[${PYTHON_USEDEP}] )
+		>=dev-python/moto-0.3.6[${PYTHON_USEDEP}]
+		>=dev-python/SaltTesting-2016.5.11[${PYTHON_USEDEP}]
+		>=dev-python/libcloud-0.14.0[${PYTHON_USEDEP}]
+		${RDEPEND}
+	)"
+
+DOCS=(README.rst AUTHORS)
+
+REQUIRED_USE="|| ( raet zeromq )"
+RESTRICT="x86? ( test )"
+
+PATCHES=(
+	"${FILESDIR}/${PN}-2015.8.2-tmpdir.patch"
+	"${FILESDIR}/${PN}-2016.3.1-dont-realpath-tmpdir.patch"
+	"${FILESDIR}/${PN}-2016.3.1-broken-tests.patch"
+)
+
+python_prepare() {
+	# this test fails because it trys to "pip install distribute"
+	rm tests/unit/{modules,states}/zcbuildout_test.py \
+		tests/unit/modules/{rh_ip,win_network,random_org}_test.py
+
+	# apparently libcloud does not know about this?
+	rm tests/unit/cloud/clouds/dimensiondata_test.py
+
+	# seriously? "ValueError: Missing (or not readable) key file: '/home/dany/PRIVKEY.pem'"
+	rm tests/unit/cloud/clouds/gce_test.py
+}
+
+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
+
+	# ${T} is too long a path for the tests to work
+	tempdir="$(mktemp -dup /tmp salt-XXX)"
+	mkdir "${T}/$(basename "${tempdir}")"
+
+	(
+		cleanup() { rm -f "${tempdir}"; }
+		trap cleanup EXIT
+
+		addwrite "${tempdir}"
+		ln -s "$(realpath --relative-to=/tmp "${T}/$(basename "${tempdir}")")" "${tempdir}"
+
+		USE_SETUPTOOLS=1 SHELL="/bin/bash" \
+			TMPDIR="${tempdir}" \
+			${EPYTHON} tests/runtests.py \
+			--unit-tests --no-report --verbose
+
+	) || die "testing failed"
+}


             reply	other threads:[~2016-06-16 23:43 UTC|newest]

Thread overview: 36+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-06-16 23:43 Patrick McLean [this message]
  -- strict thread matches above, loose matches on Subject: below --
2024-12-24  9:23 [gentoo-commits] repo/gentoo:master commit in: app-admin/salt/, app-admin/salt/files/ Sebastian Pipping
2023-09-08 22:56 Patrick McLean
2023-08-15 19:47 Patrick McLean
2023-04-20 19:19 Patrick McLean
2023-01-30  4:55 Sebastian Pipping
2023-01-10 14:15 Michał Górny
2022-08-31 17:21 Patrick McLean
2022-06-22 11:50 Michał Górny
2022-04-18 18:49 Patrick McLean
2022-04-18 17:34 Patrick McLean
2022-03-31 16:18 Patrick McLean
2022-03-31 16:07 Patrick McLean
2022-03-27  1:00 Sam James
2021-09-08  1:01 Patrick McLean
2021-06-09 22:27 Patrick McLean
2021-02-27  2:32 Patrick McLean
2021-02-27  2:32 Patrick McLean
2021-02-18  1:18 Patrick McLean
2021-02-09 17:00 Patrick McLean
2020-09-04  1:45 Patrick McLean
2020-04-30 17:58 Patrick McLean
2020-04-30  1:17 Patrick McLean
2019-02-27 21:40 Patrick McLean
2018-10-24 23:02 Patrick McLean
2017-12-05 21:44 Patrick McLean
2017-08-15 17:17 Manuel Rüger
2017-08-01  1:28 Patrick McLean
2016-12-01  1:16 Patrick McLean
2016-12-01  1:16 Patrick McLean
2016-06-16 18:48 Patrick McLean
2016-02-01 22:57 Patrick McLean
2015-11-24  0:21 Patrick McLean
2015-11-20  2:16 Patrick McLean
2015-11-06  7:58 Justin Lecher
2015-08-25 17:31 Patrick McLean

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=1466120582.f39161cfeb4839082034ab3130d54aec390ee4a1.chutzpah@gentoo \
    --to=chutzpah@gentoo.org \
    --cc=gentoo-commits@lists.gentoo.org \
    --cc=gentoo-dev@lists.gentoo.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox