From f3e05a5f4a4f98c880d544aebfdde3798a45812f Mon Sep 17 00:00:00 2001 From: Adam Samalik Date: Mon, 8 May 2023 07:54:41 +0200 Subject: [PATCH] import sources --- .gitignore | 1 + python-psutil-skip-flaky-tests.patch | 23 ++ python-psutil-skip-test-broken-ipv6.patch | 26 ++ python-psutil-skip-tests-in-mock.patch | 134 +++++++++ python-psutil.spec | 333 ++++++++++++++++++++++ sources | 1 + 6 files changed, 518 insertions(+) create mode 100644 .gitignore create mode 100644 python-psutil-skip-flaky-tests.patch create mode 100644 python-psutil-skip-test-broken-ipv6.patch create mode 100644 python-psutil-skip-tests-in-mock.patch create mode 100644 python-psutil.spec create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..2c05d65 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/psutil-5.8.0.tar.gz diff --git a/python-psutil-skip-flaky-tests.patch b/python-psutil-skip-flaky-tests.patch new file mode 100644 index 0000000..47d1487 --- /dev/null +++ b/python-psutil-skip-flaky-tests.patch @@ -0,0 +1,23 @@ +From 2dda5cf427161ebb66a2de2429395d67fbba3955 Mon Sep 17 00:00:00 2001 +From: Tomas Orsava +Date: Tue, 26 Jan 2021 15:02:57 +0100 +Subject: [PATCH] Skip flaky tests +--- + psutil/tests/test_system.py | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/psutil/tests/test_system.py b/psutil/tests/test_system.py +index a55164c..912a254 100755 +--- a/psutil/tests/test_system.py ++++ b/psutil/tests/test_system.py +@@ -724,6 +724,7 @@ class TestNetAPIs(PsutilTestCase): + self.assertEqual(psutil.net_io_counters(pernic=True), {}) + assert m.called + ++ @unittest.skip("Skip flaky tests") + def test_net_if_addrs(self): + nics = psutil.net_if_addrs() + assert nics, nics +-- +2.29.2 + diff --git a/python-psutil-skip-test-broken-ipv6.patch b/python-psutil-skip-test-broken-ipv6.patch new file mode 100644 index 0000000..a1269e5 --- /dev/null +++ b/python-psutil-skip-test-broken-ipv6.patch @@ -0,0 +1,26 @@ +From 19faccd7ebef5c1c8095848909b2b6a629ec0d91 Mon Sep 17 00:00:00 2001 +From: Tomas Orsava +Date: Tue, 26 Jan 2021 12:49:50 +0100 +Subject: [PATCH] Test skipped due to broken handling of IPv6 addresses + +See: https://github.com/giampaolo/psutil/issues/1909 +--- + psutil/tests/test_linux.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/psutil/tests/test_linux.py b/psutil/tests/test_linux.py +index 2c5d701..ef77157 100755 +--- a/psutil/tests/test_linux.py ++++ b/psutil/tests/test_linux.py +@@ -920,7 +920,7 @@ class TestLoadAvg(PsutilTestCase): + # ===================================================================== + + +-@unittest.skipIf(not LINUX, "LINUX only") ++@unittest.skip("Test skipped due to broken handling of IPv6 addresses: https://github.com/giampaolo/psutil/issues/1909") + class TestSystemNetIfAddrs(PsutilTestCase): + + def test_ips(self): +-- +2.29.2 + diff --git a/python-psutil-skip-tests-in-mock.patch b/python-psutil-skip-tests-in-mock.patch new file mode 100644 index 0000000..93a2e1c --- /dev/null +++ b/python-psutil-skip-tests-in-mock.patch @@ -0,0 +1,134 @@ +diff --color -Nur psutil-release-5.8.0.orig/psutil/tests/test_linux.py psutil-release-5.8.0/psutil/tests/test_linux.py +--- psutil-release-5.8.0.orig/psutil/tests/test_linux.py 2020-12-18 16:45:00.000000000 -0800 ++++ psutil-release-5.8.0/psutil/tests/test_linux.py 2021-01-10 15:38:31.104890945 -0800 +@@ -661,14 +661,13 @@ + value = int(value.split('-')[1]) + 1 + self.assertEqual(psutil.cpu_count(), value) + +- @unittest.skipIf(not os.path.exists("/sys/devices/system/cpu"), +- "/sys/devices/system/cpu does not exist") ++ @unittest.skip("Unreliable on mock") + def test_against_sysdev_cpu_num(self): + ls = os.listdir("/sys/devices/system/cpu") + count = len([x for x in ls if re.search(r"cpu\d+$", x) is not None]) + self.assertEqual(psutil.cpu_count(), count) + +- @unittest.skipIf(not which("nproc"), "nproc utility not available") ++ @unittest.skip("Unreliable on mock") + def test_against_nproc(self): + num = int(sh("nproc --all")) + self.assertEqual(psutil.cpu_count(logical=True), num) +@@ -713,7 +712,7 @@ + m.called + + +-@unittest.skipIf(not LINUX, "LINUX only") ++@unittest.skip("Unreliable in mock") + class TestSystemCPUCountPhysical(PsutilTestCase): + + @unittest.skipIf(not which("lscpu"), "lscpu utility not available") +@@ -745,7 +744,7 @@ + @unittest.skipIf(not LINUX, "LINUX only") + class TestSystemCPUFrequency(PsutilTestCase): + +- @unittest.skipIf(not HAS_CPU_FREQ, "not supported") ++ @unittest.skip("Unreliable in mock") + def test_emulate_use_second_file(self): + # https://github.com/giampaolo/psutil/issues/981 + def path_exists_mock(path): +@@ -759,7 +758,7 @@ + create=True): + assert psutil.cpu_freq() + +- @unittest.skipIf(not HAS_CPU_FREQ, "not supported") ++ @unittest.skip("Unreliable in mock") + def test_emulate_use_cpuinfo(self): + # Emulate a case where /sys/devices/system/cpu/cpufreq* does not + # exist and /proc/cpuinfo is used instead. +@@ -888,7 +887,7 @@ + self.assertEqual(freq.current, 200) + + +-@unittest.skipIf(not LINUX, "LINUX only") ++@unittest.skip("Unreliable in mock") + class TestSystemCPUStats(PsutilTestCase): + + def test_ctx_switches(self): +@@ -2126,13 +2125,14 @@ + value = tuple(map(int, value.split()[1:4])) + self.assertEqual(self.proc.gids(), value) + +- @retry_on_failure() ++ @unittest.skip("Unreliable in mock") + def test_num_ctx_switches(self): + value = self.read_status_file("voluntary_ctxt_switches:") + self.assertEqual(self.proc.num_ctx_switches().voluntary, value) + value = self.read_status_file("nonvoluntary_ctxt_switches:") + self.assertEqual(self.proc.num_ctx_switches().involuntary, value) + ++ @unittest.skip("Unreliable in mock") + def test_cpu_affinity(self): + value = self.read_status_file("Cpus_allowed_list:") + if '-' in str(value): +diff --color -Nur psutil-release-5.8.0.orig/psutil/tests/test_misc.py psutil-release-5.8.0/psutil/tests/test_misc.py +--- psutil-release-5.8.0.orig/psutil/tests/test_misc.py 2020-12-18 16:45:00.000000000 -0800 ++++ psutil-release-5.8.0/psutil/tests/test_misc.py 2021-01-10 15:38:31.104890945 -0800 +@@ -355,7 +355,7 @@ + + def test_setup_script(self): + setup_py = os.path.join(ROOT_DIR, 'setup.py') +- if CI_TESTING and not os.path.exists(setup_py): ++ if not os.path.exists(setup_py): + return self.skipTest("can't find setup.py") + module = import_module_by_path(setup_py) + self.assertRaises(SystemExit, module.setup) +diff --color -Nur psutil-release-5.8.0.orig/psutil/tests/test_system.py psutil-release-5.8.0/psutil/tests/test_system.py +--- psutil-release-5.8.0.orig/psutil/tests/test_system.py 2020-12-18 16:45:00.000000000 -0800 ++++ psutil-release-5.8.0/psutil/tests/test_system.py 2021-01-10 15:38:31.105890946 -0800 +@@ -198,7 +198,7 @@ + self.assertGreater(bt, 0) + self.assertLess(bt, time.time()) + +- @unittest.skipIf(CI_TESTING and not psutil.users(), "unreliable on CI") ++ @unittest.skipIf(not psutil.users(), "unreliable on CI") + def test_users(self): + users = psutil.users() + self.assertNotEqual(users, []) +@@ -510,7 +510,7 @@ + if not AIX and name in ('ctx_switches', 'interrupts'): + self.assertGreater(value, 0) + +- @unittest.skipIf(not HAS_CPU_FREQ, "not suported") ++ @unittest.skip("Unreliable in mock") + def test_cpu_freq(self): + def check_ls(ls): + for nt in ls: +@@ -579,6 +579,7 @@ + def test_disk_usage_bytes(self): + psutil.disk_usage(b'.') + ++ @unittest.skip("unreliable on CI") + def test_disk_partitions(self): + def check_ntuple(nt): + self.assertIsInstance(nt.device, str) +@@ -828,7 +829,7 @@ + + class TestSensorsAPIs(PsutilTestCase): + +- @unittest.skipIf(not HAS_SENSORS_TEMPERATURES, "not supported") ++ @unittest.skip("Unreliable in mock") + def test_sensors_temperatures(self): + temps = psutil.sensors_temperatures() + for name, entries in temps.items(): +diff --color -Nur psutil-release-5.8.0.orig/psutil/tests/test_testutils.py psutil-release-5.8.0/psutil/tests/test_testutils.py +--- psutil-release-5.8.0.orig/psutil/tests/test_testutils.py 2020-12-18 16:45:00.000000000 -0800 ++++ psutil-release-5.8.0/psutil/tests/test_testutils.py 2021-01-10 15:48:14.240695423 -0800 +@@ -364,7 +364,7 @@ + self.assertRaises(ValueError, self.execute, lambda: 0, retries=-1) + + @retry_on_failure() +- @unittest.skipIf(CI_TESTING, "skipped on CI") ++ @unittest.skip("Unreliable in mock") + def test_leak_mem(self): + ls = [] + diff --git a/python-psutil.spec b/python-psutil.spec new file mode 100644 index 0000000..fbcc926 --- /dev/null +++ b/python-psutil.spec @@ -0,0 +1,333 @@ +%global srcname psutil +%global sum A process and system utilities module for Python + +%bcond_without tests + +Name: python-%{srcname} +Version: 5.8.0 +Release: 4%{?dist} +Summary: %{sum} + +License: BSD +URL: https://github.com/giampaolo/psutil +Source0: %{url}/archive/release-%{version}/%{srcname}-%{version}.tar.gz + +# Exclude i686 arch. Due to a modularity issue it's being added to the +# x86_64 compose of CRB, but we don't want to ship it at all. +# See: https://projects.engineering.redhat.com/browse/RCM-72605 +ExcludeArch: i686 + +# skip 2 tests that fail in mock chroots +# +Patch0: python-psutil-skip-tests-in-mock.patch + +# Skip test due to broken handling of IPv6 addresses +# See: https://github.com/giampaolo/psutil/issues/1909 +Patch1: python-psutil-skip-test-broken-ipv6.patch + +# Skip flaky tests +Patch2: python-psutil-skip-flaky-tests.patch + +BuildRequires: make +BuildRequires: gcc +BuildRequires: python%{python3_pkgversion}-devel +BuildRequires: python%{python3_pkgversion}-rpm-macros +# Test dependencies +%if %{with tests} +BuildRequires: procps-ng +BuildRequires: python%{python3_pkgversion}-setuptools +%endif + +%description +psutil is a module providing an interface for retrieving information on all +running processes and system utilization (CPU, memory, disks, network, users) in +a portable way by using Python, implementing many functionalities offered by +command line tools such as: ps, top, df, kill, free, lsof, free, netstat, +ifconfig, nice, ionice, iostat, iotop, uptime, pidof, tty, who, taskset, pmap. + + +%package -n python%{python3_pkgversion}-psutil +Summary: %{sum} +%{?python_provide:%python_provide python%{python3_pkgversion}-%{srcname}} + +%description -n python%{python3_pkgversion}-psutil +psutil is a module providing an interface for retrieving information on all +running processes and system utilization (CPU, memory, disks, network, users) in +a portable way by using Python 3, implementing many functionalities offered by +command line tools such as: ps, top, df, kill, free, lsof, free, netstat, +ifconfig, nice, ionice, iostat, iotop, uptime, pidof, tty, who, taskset, pmap. + + +%prep +%autosetup -p1 -n %{srcname}-release-%{version} + +# Remove shebangs +find psutil -name \*.py | while read file; do + sed -i.orig -e '1{/^#!/d}' $file && \ + touch -r $file.orig $file && \ + rm $file.orig +done + + +%build +%py3_build + + +%install +%py3_install + + +%if %{with tests} +%check +make test CI_TESTING=1 PYTHON=%{__python3} PYTHONPATH=%{buildroot}/%{python3_sitearch} +%endif + + +%files -n python%{python3_pkgversion}-%{srcname} +%license LICENSE +%doc CREDITS HISTORY.rst README.rst +%{python3_sitearch}/%{srcname}/ +%{python3_sitearch}/*.egg-info + + +%changelog +* Fri Jan 15 2021 Tomas Orsava - 5.8.0-4 +- Convert from Fedora to the python39 module in RHEL8 +- Resolves: rhbz#1877430 + +* Sun Jan 10 2021 Kevin Fenzi - 5.8.0-3 +- Disable test_leak_mem test. + +* Sun Jan 10 2021 Kevin Fenzi - 5.8.0-2 +- Disable test_sensors_temperatures test. + +* Fri Jan 01 2021 Kevin Fenzi - 5.8.0-1 +- Update to 5.8.0. Fixes rhbz#1909321 +- Re-enable tests (skipping 2 that fail in mock). + +* Fri Nov 06 2020 Joel Capitao - 5.7.3-1 +- Update to 5.7.3 (rhbz#1857187) + +* Wed Jul 29 2020 Fedora Release Engineering - 5.7.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 22 2020 Nicolas Chauvet - 5.7.2-1 +- Update to 5.7.2 + +* Wed Jun 24 2020 Michel Alexandre Salim - 5.6.7-3 +- Add BR on setuptools for all package combinations + +* Sat May 23 2020 Miro Hrončok - 5.6.7-2 +- Rebuilt for Python 3.9 + +* Sun Feb 16 2020 Kevin Fenzi - 5.6.7-1 +- Update to 5.6.7. Fixes bug 1768362. + +* Thu Jan 30 2020 Fedora Release Engineering - 5.6.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Sun Oct 06 2019 Kevin Fenzi - 5.6.3-5 +- Add python2-setuptools to BuildRequires to fix egg info. Fixes bug #1750362 + +* Tue Sep 03 2019 Miro Hrončok - 5.6.3-4 +- Reduce unused build dependencies + +* Fri Aug 16 2019 Miro Hrončok - 5.6.3-3 +- Rebuilt for Python 3.8 + +* Fri Jul 26 2019 Fedora Release Engineering - 5.6.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Jun 30 2019 Kevin Fenzi - 5.6.3-1 +- Update to 5.6.3 Fixes bug #1567102 + +* Thu Feb 28 2019 Yatin Karel - 5.5.1-1 +- Update to 5.5.1 (Resolves #1567102) + +* Sat Feb 02 2019 Fedora Release Engineering - 5.4.3-7 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Sat Jul 14 2018 Fedora Release Engineering - 5.4.3-6 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Jun 17 2018 Miro Hrončok - 5.4.3-5 +- Rebuilt for Python 3.7 + +* Fri Feb 09 2018 Fedora Release Engineering - 5.4.3-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Mon Jan 29 2018 Iryna Shcherbina - 5.4.3-3 +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Mon Jan 22 2018 Gwyn Ciesla - 5.4.3-2 +- Disable tests entirely. + +* Mon Jan 22 2018 Gwyn Ciesla - 5.4.3-1 +- 5.4.3 + +* Thu Aug 03 2017 Fedora Release Engineering - 5.2.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 5.2.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sun Apr 23 2017 Kevin Fenzi - 5.2.2-1 +- Update to 5.2.2. Fixes bug #1441010 + +* Sat Mar 25 2017 Kevin Fenzi - 5.2.1-1 +- Update to 5.2.1. Fixes bug #1418489 + +* Sat Feb 25 2017 Kevin Fenzi - 5.1.3-1 +- Update to 5.1.3. Fixes bug #1418489 + +* Sat Feb 11 2017 Fedora Release Engineering - 5.0.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Mon Jan 02 2017 Kevin Fenzi - 5.0.1-1 +- Update to 5.0.1. Fixes bug #1389579 +- Disable failing test while upstream looks at it. + +* Wed Nov 09 2016 Kevin Fenzi - 5.0.0-1 +- Update to 5.0.0. Fixes bug #1389579 + +* Tue Oct 25 2016 Kevin Fenzi - 4.4.0-1 +- Update to 4.4.0. Fixes bug #1387942 + +* Sat Sep 03 2016 Kevin Fenzi - 4.3.1-1 +- Update to 4.3.1. Fixes bug #1372500 + +* Tue Jul 19 2016 Fedora Release Engineering - 4.3.0-2 +- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages + +* Tue Jun 21 2016 Orion Poplawski - 4.3.0-1 +- Update to 4.3.0 + +* Mon May 16 2016 Orion Poplawski - 3.2.1-6 +- Use modern provides filter +- Update URL +- Use %%python3_pkgversion for EPEL7 compat + +* Fri Mar 11 2016 Than Ngo - 3.2.1-5 +- fix endian issue on s390x/ppc64 + +* Thu Feb 04 2016 Fedora Release Engineering - 3.2.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Nov 10 2015 Fedora Release Engineering - 3.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Changes/python3.5 + +* Fri Sep 4 2015 Michel Alexandre Salim - 3.2.1-2 +- Add Obsoletes for old package + +* Fri Sep 4 2015 Michel Alexandre Salim - 3.2.1-1 +- Update to 3.2.1 +- Update to latest Python guidelines (https://fedorahosted.org/fpc/ticket/281) + +* Wed Jul 22 2015 Michel Alexandre Salim - 3.1.1-2 +- Restore *.so files +- Enable tests + +* Tue Jul 21 2015 Michel Alexandre Salim - 3.1.1-1 +- Update to 3.1.1 + +* Thu Jun 18 2015 Fedora Release Engineering - 2.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild + +* Wed Feb 18 2015 Ralph Bean - 2.2.0-1 +- new version + +* Wed Dec 3 2014 Michel Alexandre Salim - 2.1.3-1 +- Update to 2.1.3 + +* Sun Aug 17 2014 Fedora Release Engineering - 1.2.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Thu Jul 31 2014 Tom Callaway - 1.2.1-4 +- fix license handling + +* Sat Jun 07 2014 Fedora Release Engineering - 1.2.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Wed May 28 2014 Kalev Lember - 1.2.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Changes/Python_3.4 + +* Mon Jan 06 2014 Mohamed El Morabity - 1.2.1-1 +- Update to 1.2.1 + +* Fri Aug 16 2013 Mohamed El Morabity - 1.0.1-1 +- Update to 1.0.1 + +* Sun Aug 04 2013 Fedora Release Engineering - 0.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild + +* Sun May 12 2013 Mohamed El Morabity - 0.7.1-1 +- Update to 0.7.1 + +* Thu Feb 14 2013 Fedora Release Engineering - 0.6.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild + +* Sun Aug 19 2012 Mohamed El Morabity - 0.6.1-1 +- Update to 0.6.1 + +* Sat Aug 04 2012 David Malcolm - 0.5.1-3 +- rebuild for https://fedoraproject.org/wiki/Features/Python_3.3 + +* Sat Jul 21 2012 Fedora Release Engineering - 0.5.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild + +* Sun Jul 01 2012 Mohamed El Morabity - 0.5.1-1 +- Update to 0.5.1 + +* Sat Jan 14 2012 Fedora Release Engineering - 0.4.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild + +* Fri Dec 16 2011 Mohamed El Morabity - 0.4.1-1 +- Update to 0.4.1 + +* Sun Nov 20 2011 Mohamed El Morabity - 0.4.0-1 +- Update to 0.4.0 + +* Mon Jul 18 2011 Mohamed El Morabity - 0.3.0-1 +- Update to 0.3.0 + +* Wed Mar 23 2011 Mohamed El Morabity - 0.2.1-1 +- Update to 0.2.1 +- Spec cleanup + +* Tue Feb 08 2011 Fedora Release Engineering - 0.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild + +* Mon Nov 22 2010 Mohamed El Morabity - 0.2.0-1 +- Update to 0.2.0 + +* Wed Aug 25 2010 Thomas Spura - 0.1.3-5 +- rebuild with python3.2 + http://lists.fedoraproject.org/pipermail/devel/2010-August/141368.html + +* Fri Jul 30 2010 Thomas Spura - 0.1.3-4 +- bump, because previous build nvr already existed in F-14 + +* Thu Jul 22 2010 David Malcolm - 0.1.3-3 +- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild + +* Tue Apr 13 2010 ELMORABITY Mohamed 0.1.3-2 +- Add missing popd in %%build + +* Sat Mar 27 2010 ELMORABITY Mohamed 0.1.3-1 +- Update to 0.1.3 +- Remove useless call to 2to3 and corresponding BuildRequires + python2-tools (this version supports Python 3) + +* Sat Feb 20 2010 ELMORABITY Mohamed 0.1.2-4 +- Change python-utils BuildRequires for python2-utils + +* Sat Feb 20 2010 ELMORABITY Mohamed 0.1.2-3 +- Add python3 subpackage + +* Thu Jan 14 2010 ELMORABITY Mohamed 0.1.2-2 +- Drop no-shebang patch for a sed command +- Drop test suite from %%doc tag + +* Fri Jan 8 2010 ELMORABITY Mohamed 0.1.2-1 +- Initial RPM release diff --git a/sources b/sources new file mode 100644 index 0000000..e7f8fc8 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (psutil-5.8.0.tar.gz) = 156dffb660fcfb23b420d0455296c6b1ab366844390706af40788d89335eb946bb2e66f792755071c09ca282ad0d5503bb62175344753c88ba35613756e22fa3