[meld] Update build helpers for Python 3.8 compatibility (#322)
- From: Kai Willadsen <kaiw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [meld] Update build helpers for Python 3.8 compatibility (#322)
- Date: Sun, 5 May 2019 22:24:46 +0000 (UTC)
commit 9cb590f9804a89d8914d0d7d6c89c336f6d86d86
Author: Kai Willadsen <kai willadsen gmail com>
Date: Mon May 6 08:15:23 2019 +1000
Update build helpers for Python 3.8 compatibility (#322)
The `linux_distribution` helper for the platform module has been removed
in Python 3.8, so we need an additional helper to check for the Debian-
style packaging layout.
Really this should be an `install_requires`, but moving our build
helpers to `setuptools` is a not-insignificant risk that I'd rather not
take when we're looking at moving to Meson.
README.md | 6 ++++++
meld/build_helpers.py | 29 ++++++++++++++++++++++++-----
2 files changed, 30 insertions(+), 5 deletions(-)
---
diff --git a/README.md b/README.md
index 2105dbdd..dfb63fb1 100644
--- a/README.md
+++ b/README.md
@@ -33,10 +33,16 @@ And following packages with GObject introspection:
Build requirements
------------------
+System packages:
+
* intltool
* itstool
* xmllint
+Python packages:
+
+* distro
+
Building Windows MSIs requires:
* cx_Freeze 5
diff --git a/meld/build_helpers.py b/meld/build_helpers.py
index 5977b3cd..f9fb302b 100644
--- a/meld/build_helpers.py
+++ b/meld/build_helpers.py
@@ -31,6 +31,15 @@ import platform
import sys
from distutils.log import info
+try:
+ import distro
+except ImportError:
+ python_version = tuple(int(x) for x in platform.python_version_tuple())
+ if python_version >= (3, 8):
+ print(
+ 'Missing build requirement "distro" Python module; '
+ 'install paths may be incorrect', file=sys.stderr)
+
def has_help(self):
return "build_help" in self.distribution.cmdclass and os.name != 'nt'
@@ -404,11 +413,21 @@ class install(distutils.command.install.install):
def finalize_options(self):
special_cases = ('debian', 'ubuntu', 'linuxmint')
- if (platform.system() == 'Linux' and
- platform.linux_distribution()[0].lower() in special_cases):
- # Maintain an explicit install-layout, but use deb by default
- specified_layout = getattr(self, 'install_layout', None)
- self.install_layout = specified_layout or 'deb'
+ if platform.system() == 'Linux':
+ # linux_distribution has been removed in Python 3.8; we require
+ # the third-party distro package for future handling.
+ try:
+ distribution = platform.linux_distribution()[0].lower()
+ except AttributeError:
+ try:
+ distribution = distro.id()
+ except NameError:
+ distribution = 'unknown'
+
+ if distribution in special_cases:
+ # Maintain an explicit install-layout, but use deb by default
+ specified_layout = getattr(self, 'install_layout', None)
+ self.install_layout = specified_layout or 'deb'
distutils.command.install.install.finalize_options(self)
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]