diff options
Diffstat (limited to 'debian/patches/platform-lsbrelease.diff')
-rw-r--r-- | debian/patches/platform-lsbrelease.diff | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/debian/patches/platform-lsbrelease.diff b/debian/patches/platform-lsbrelease.diff new file mode 100644 index 0000000..3a3c2a4 --- /dev/null +++ b/debian/patches/platform-lsbrelease.diff @@ -0,0 +1,85 @@ +# DP: Use /etc/lsb-release to identify the platform. + +Index: b/Lib/platform.py +=================================================================== +--- a/Lib/platform.py ++++ b/Lib/platform.py +@@ -268,7 +268,7 @@ _release_version = re.compile(r'([^0-9]+ + _supported_dists = ( + 'SuSE', 'debian', 'fedora', 'redhat', 'centos', + 'mandrake', 'mandriva', 'rocks', 'slackware', 'yellowdog', 'gentoo', +- 'UnitedLinux', 'turbolinux', 'arch', 'mageia') ++ 'UnitedLinux', 'turbolinux', 'arch', 'mageia', 'Ubuntu') + + def _parse_release_file(firstline): + +@@ -297,6 +297,10 @@ def _parse_release_file(firstline): + id = l[1] + return '', version, id + ++_distributor_id_file_re = re.compile("(?:DISTRIB_ID\s*=)\s*(.*)", re.I) ++_release_file_re = re.compile("(?:DISTRIB_RELEASE\s*=)\s*(.*)", re.I) ++_codename_file_re = re.compile("(?:DISTRIB_CODENAME\s*=)\s*(.*)", re.I) ++ + def linux_distribution(distname='', version='', id='', + + supported_dists=_supported_dists, +@@ -329,6 +333,25 @@ def _linux_distribution(distname, versio + args given as parameters. + + """ ++ # check for the Debian/Ubuntu /etc/lsb-release file first, needed so ++ # that the distribution doesn't get identified as Debian. ++ try: ++ with open("/etc/lsb-release", "r") as etclsbrel: ++ for line in etclsbrel: ++ m = _distributor_id_file_re.search(line) ++ if m: ++ _u_distname = m.group(1).strip() ++ m = _release_file_re.search(line) ++ if m: ++ _u_version = m.group(1).strip() ++ m = _codename_file_re.search(line) ++ if m: ++ _u_id = m.group(1).strip() ++ if _u_distname and _u_version: ++ return (_u_distname, _u_version, _u_id) ++ except (EnvironmentError, UnboundLocalError): ++ pass ++ + try: + etc = os.listdir(_UNIXCONFDIR) + except OSError: +Index: b/Lib/test/test_platform.py +=================================================================== +--- a/Lib/test/test_platform.py ++++ b/Lib/test/test_platform.py +@@ -327,28 +327,6 @@ class PlatformTest(unittest.TestCase): + returncode = ret >> 8 + self.assertEqual(returncode, len(data)) + +- def test_linux_distribution_encoding(self): +- # Issue #17429 +- with tempfile.TemporaryDirectory() as tempdir: +- filename = os.path.join(tempdir, 'fedora-release') +- with open(filename, 'w', encoding='utf-8') as f: +- f.write('Fedora release 19 (Schr\xf6dinger\u2019s Cat)\n') +- +- with mock.patch('platform._UNIXCONFDIR', tempdir): +- with warnings.catch_warnings(): +- warnings.filterwarnings( +- 'ignore', +- 'dist\(\) and linux_distribution\(\) ' +- 'functions are deprecated .*', +- PendingDeprecationWarning, +- ) +- distname, version, distid = platform.linux_distribution() +- +- self.assertEqual(distname, 'Fedora') +- self.assertEqual(version, '19') +- self.assertEqual(distid, 'Schr\xf6dinger\u2019s Cat') +- +- + class DeprecationTest(unittest.TestCase): + + def test_dist_deprecation(self): |