diff options
author | Nirbheek Chauhan <nirbheek@centricular.com> | 2023-11-15 16:37:11 +0000 |
---|---|---|
committer | Nirbheek Chauhan <nirbheek@centricular.com> | 2023-11-15 17:34:54 +0000 |
commit | b509b618e7e47e32e248f4a61056a15e45f06b22 (patch) | |
tree | 8e5edcb984e904291b3b5a5c56a4814c0be046af | |
parent | fb3e0a57d112c43e5cc94e1b4464a74c5f385dcc (diff) |
Stop using setuptools in a bunch of places, incl meson.recipe
Since Python 3.12, venv no longer installs setuptools by default, and
frankly we don't need it anymore since we can install with pip.
The only place left that uses setuptools is bundlesource now.
Part-of: <https://gitlab.freedesktop.org/gstreamer/cerbero/-/merge_requests/1301>
-rw-r--r-- | cerbero/bootstrap/build_tools.py | 8 | ||||
-rw-r--r-- | cerbero/utils/__init__.py | 8 | ||||
-rw-r--r-- | cerbero/utils/shell.py | 5 | ||||
-rw-r--r-- | recipes/build-tools/meson.recipe | 18 |
4 files changed, 29 insertions, 10 deletions
diff --git a/cerbero/bootstrap/build_tools.py b/cerbero/bootstrap/build_tools.py index f9659be5..b2b98a56 100644 --- a/cerbero/bootstrap/build_tools.py +++ b/cerbero/bootstrap/build_tools.py @@ -123,9 +123,15 @@ class BuildTools (BootstrapperBase, Fetch): os.remove(tof) shutil.move(os.path.join(scriptsdir, f), tof) os.rmdir(scriptsdir) + python = os.path.join(self.config.build_tools_prefix, 'bin', 'python') + shell.new_call([python, '-m', 'pip', 'install', 'setuptools']) async def start(self, jobs=0): - self.setup_venv() + python = os.path.join(self.config.build_tools_prefix, 'bin', 'python') + if self.config.platform == Platform.WINDOWS: + python += '.exe' + if not os.path.exists(python): + self.setup_venv() # Check and these at the last minute because we may have installed them # in system bootstrap self.recipes += self.check_build_tools() diff --git a/cerbero/utils/__init__.py b/cerbero/utils/__init__.py index 624a461e..4f08d6a1 100644 --- a/cerbero/utils/__init__.py +++ b/cerbero/utils/__init__.py @@ -33,7 +33,6 @@ try: import xml.etree.cElementTree as etree except ImportError: from lxml import etree -from distutils.version import StrictVersion import gettext import platform as pplatform import re @@ -544,6 +543,9 @@ def add_system_libs(config, new_env, old_env=None): os.path.join(sysroot, 'usr/share/aclocal')] new_env['ACLOCAL_PATH'] = ':'.join(search_paths) +def split_version(s): + return tuple(int(e) for e in s.split('.')) + def needs_xcode8_sdk_workaround(config): ''' Returns whether the XCode 8 clock_gettime, mkostemp, getentropy workaround @@ -552,10 +554,10 @@ def needs_xcode8_sdk_workaround(config): These symbols are only available on macOS 10.12+ and iOS 10.0+ ''' if config.target_platform == Platform.DARWIN: - if StrictVersion(config.min_osx_sdk_version) < StrictVersion('10.12'): + if split_version(config.min_osx_sdk_version) < (10, 12): return True elif config.target_platform == Platform.IOS: - if StrictVersion(config.ios_min_version) < StrictVersion('10.0'): + if split_version(config.ios_min_version) < (10, 0): return True return False diff --git a/cerbero/utils/shell.py b/cerbero/utils/shell.py index a47347cf..60f07393 100644 --- a/cerbero/utils/shell.py +++ b/cerbero/utils/shell.py @@ -33,10 +33,9 @@ import hashlib import urllib.request, urllib.error, urllib.parse import collections from pathlib import Path, PurePath -from distutils.version import StrictVersion from cerbero.enums import CERBERO_VERSION, Platform, Distro -from cerbero.utils import _, system_info, to_unixpath, determine_num_of_cpus, CerberoSemaphore +from cerbero.utils import _, system_info, split_version, CerberoSemaphore from cerbero.utils import messages as m from cerbero.errors import CommandError, FatalError @@ -682,7 +681,7 @@ def check_tool_version(tool_name, needed, env, version_arg=None): m = re.search(r'([0-9]+\.[0-9]+(\.[0-9]+)?)', out) if m: found = m.groups()[0] - newer = StrictVersion(found) >= StrictVersion(needed) + newer = split_version(found) >= split_version(needed) return tool, found, newer diff --git a/recipes/build-tools/meson.recipe b/recipes/build-tools/meson.recipe index dafb5c6b..794dfe76 100644 --- a/recipes/build-tools/meson.recipe +++ b/recipes/build-tools/meson.recipe @@ -1,7 +1,8 @@ # -*- Mode: Python -*- vi:si:et:sw=4:sts=4:ts=4:syntax=python +import glob import shutil -from pathlib import PurePath, Path +from pathlib import PurePath class Recipe(recipe.Recipe): name = 'meson' @@ -31,6 +32,17 @@ class Recipe(recipe.Recipe): # Our workaround is to only install the script into bin. This also # fixes things on Windows, where the script is installed into Scripts/ # instead of bin/ - await shell.async_call([self.config.python_exe, 'setup.py', 'install', - '--prefix', prefix, '--install-scripts', '{}/bin'.format(prefix)], + await shell.async_call([self.config.python_exe, '-m', 'pip', 'install', '--prefix', prefix, '.'], cmd_dir=self.build_dir, env=self.env, logfile=self.logfile) + if self.config.platform == Platform.WINDOWS: + # Python insists on using Scripts instead of bin on Windows for + # scripts. Insist back, and use bin again. + scriptsdir = os.path.join(prefix, 'Scripts') + bindir = os.path.join(prefix, 'bin') + os.makedirs(bindir, exist_ok=True) + for f in glob.glob('*', root_dir=scriptsdir): + tof = os.path.join(bindir, f) + if os.path.isfile(tof): + os.remove(tof) + shutil.move(os.path.join(scriptsdir, f), tof) + os.rmdir(scriptsdir) |