summaryrefslogtreecommitdiff
path: root/debian/patches/platform-lsbrelease.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/platform-lsbrelease.diff')
-rw-r--r--debian/patches/platform-lsbrelease.diff85
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):