summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam James <sam@gentoo.org>2022-02-07 04:30:43 +0000
committerSam James <sam@gentoo.org>2022-02-07 04:30:57 +0000
commitc5948582c8e35c33b8d6793d6e2c83949b152586 (patch)
treeb86cdb2571c9fdee8eede1fdd37dacb9fd2a0d8b /games-strategy
parentgames-strategy/0ad: drop 0.0.24b_alpha-r1 (diff)
downloadgentoo-c5948582c8e35c33b8d6793d6e2c83949b152586.tar.gz
gentoo-c5948582c8e35c33b8d6793d6e2c83949b152586.tar.bz2
gentoo-c5948582c8e35c33b8d6793d6e2c83949b152586.zip
games-strategy/0ad: fix build with newer setuptools
Closes: https://bugs.gentoo.org/826762 Thanks-to: Stephen Cavilia <sac@atomicradi.us> Signed-off-by: Sam James <sam@gentoo.org>
Diffstat (limited to 'games-strategy')
-rw-r--r--games-strategy/0ad/0ad-0.0.25b_alpha.ebuild3
-rw-r--r--games-strategy/0ad/files/0ad-0.0.25b_alpha-fix-setuptools.patch188
2 files changed, 190 insertions, 1 deletions
diff --git a/games-strategy/0ad/0ad-0.0.25b_alpha.ebuild b/games-strategy/0ad/0ad-0.0.25b_alpha.ebuild
index e01f6242d2cd..d7b282a68f35 100644
--- a/games-strategy/0ad/0ad-0.0.25b_alpha.ebuild
+++ b/games-strategy/0ad/0ad-0.0.25b_alpha.ebuild
@@ -1,4 +1,4 @@
-# Copyright 2014-2021 Gentoo Authors
+# Copyright 2014-2022 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
@@ -90,6 +90,7 @@ RDEPEND="
PATCHES=(
"${FILESDIR}"/${PN}-0.0.24b_alpha-respect-tc.patch
+ "${FILESDIR}"/${PN}-0.0.25b_alpha-fix-setuptools.patch
)
pkg_setup() {
diff --git a/games-strategy/0ad/files/0ad-0.0.25b_alpha-fix-setuptools.patch b/games-strategy/0ad/files/0ad-0.0.25b_alpha-fix-setuptools.patch
new file mode 100644
index 000000000000..ea0626fadadd
--- /dev/null
+++ b/games-strategy/0ad/files/0ad-0.0.25b_alpha-fix-setuptools.patch
@@ -0,0 +1,188 @@
+https://bugs.gentoo.org/826762
+https://bugzilla.mozilla.org/show_bug.cgi?id=1665675
+https://phabricator.services.mozilla.com/D90627
+--- a/libraries/source/spidermonkey/patch.sh
++++ b/libraries/source/spidermonkey/patch.sh
+@@ -51,5 +51,7 @@ then
+ # https://svnweb.freebsd.org/ports/head/lang/spidermonkey78/files/patch-third__party_rust_cc_.cargo-checksum.json?view=log
+ patch -p1 < ../FixFreeBSDCargoChecksum.diff
+ # https://svnweb.freebsd.org/ports/head/lang/spidermonkey78/files/patch-third__party_rust_cc_src_lib.rs?view=log
+ patch -p1 < ../FixFreeBSDRustThirdPartyOSDetection.diff
+ fi
++
++patch -p1 < ../FixSysconfigImport.diff
+--- a/libraries/source/spidermonkey/FixSysconfigImport.diff
++++ b/libraries/source/spidermonkey/FixSysconfigImport.diff
+@@ -0,0 +1,171 @@
++diff --git a/python/mozbuild/mozbuild/configure/__init__.py b/python/mozbuild/mozbuild/configure/__init__.py
++--- a/python/mozbuild/mozbuild/configure/__init__.py
+++++ b/python/mozbuild/mozbuild/configure/__init__.py
++@@ -877,17 +877,56 @@
++
++ def _apply_imports(self, func, glob):
++ for _from, _import, _as in self._imports.pop(func, ()):
++- _from = '%s.' % _from if _from else ''
++- if _as:
++- glob[_as] = self._get_one_import('%s%s' % (_from, _import))
+++ self._get_one_import(_from, _import, _as, glob)
+++
+++ def _handle_wrapped_import(self, _from, _import, _as, glob):
+++ """Given the name of a module, "import" a mocked package into the glob
+++ iff the module is one that we wrap (either for the sandbox or for the
+++ purpose of testing). Applies if the wrapped module is exposed by an
+++ attribute of `self`.
+++
+++ For example, if the import statement is `from os import environ`, then
+++ this function will set
+++ glob['environ'] = self._wrapped_os.environ.
+++
+++ Iff this function handles the given import, return True.
+++ """
+++ module = (_from or _import).split('.')[0]
+++ attr = '_wrapped_' + module
+++ wrapped = getattr(self, attr, None)
+++ if wrapped:
+++ if _as or _from:
+++ obj = self._recursively_get_property(
+++ module, (_from + '.' if _from else '') + _import, wrapped)
+++ glob[_as or _import] = obj
++ else:
++- what = _import.split('.')[0]
++- glob[what] = self._get_one_import('%s%s' % (_from, what))
+++ glob[module] = wrapped
+++ return True
+++ else:
+++ return False
+++
+++ def _recursively_get_property(self, module, what, wrapped):
+++ """Traverse the wrapper object `wrapped` (which represents the module
+++ `module`) and return the property represented by `what`, which may be a
+++ series of nested attributes.
+++
+++ For example, if `module` is 'os' and `what` is 'os.path.join',
+++ return `wrapped.path.join`.
+++ """
+++ if what == module:
+++ return wrapped
+++ assert what.startswith(module + '.')
+++ attrs = what[len(module + '.'):].split('.')
+++ for attr in attrs:
+++ wrapped = getattr(wrapped, attr)
+++ return wrapped
++
++ @memoized_property
++ def _wrapped_os(self):
++ wrapped_os = {}
++ exec_('from os import *', {}, wrapped_os)
+++ # Special case os and os.environ so that os.environ is our copy of
+++ # the environment.
++ wrapped_os['environ'] = self._environ
++ return ReadOnlyNamespace(**wrapped_os)
++
++@@ -913,57 +952,62 @@
++
++ return ReadOnlyNamespace(**wrapped_subprocess)
++
++- def _get_one_import(self, what):
++- # The special `__sandbox__` module gives access to the sandbox
++- # instance.
++- if what == '__sandbox__':
++- return self
+++ @memoized_property
+++ def _wrapped_six(self):
+++ if six.PY3:
+++ return six
+++ wrapped_six = {}
+++ exec_('from six import *', {}, wrapped_six)
+++ wrapped_six_moves = {}
+++ exec_('from six.moves import *', {}, wrapped_six_moves)
+++ wrapped_six_moves_builtins = {}
+++ exec_('from six.moves.builtins import *', {},
+++ wrapped_six_moves_builtins)
+++
++ # Special case for the open() builtin, because otherwise, using it
++ # fails with "IOError: file() constructor not accessible in
++ # restricted mode". We also make open() look more like python 3's,
++ # decoding to unicode strings unless the mode says otherwise.
++- if what == '__builtin__.open' or what == 'builtins.open':
++- if six.PY3:
++- return open
+++ def wrapped_open(name, mode=None, buffering=None):
+++ args = (name,)
+++ kwargs = {}
+++ if buffering is not None:
+++ kwargs['buffering'] = buffering
+++ if mode is not None:
+++ args += (mode,)
+++ if 'b' in mode:
+++ return open(*args, **kwargs)
+++ kwargs['encoding'] = system_encoding
+++ return codecs.open(*args, **kwargs)
+++
+++ wrapped_six_moves_builtins['open'] = wrapped_open
+++ wrapped_six_moves['builtins'] = ReadOnlyNamespace(
+++ **wrapped_six_moves_builtins)
+++ wrapped_six['moves'] = ReadOnlyNamespace(**wrapped_six_moves)
++
++- def wrapped_open(name, mode=None, buffering=None):
++- args = (name,)
++- kwargs = {}
++- if buffering is not None:
++- kwargs['buffering'] = buffering
++- if mode is not None:
++- args += (mode,)
++- if 'b' in mode:
++- return open(*args, **kwargs)
++- kwargs['encoding'] = system_encoding
++- return codecs.open(*args, **kwargs)
++- return wrapped_open
++- # Special case os and os.environ so that os.environ is our copy of
++- # the environment.
++- if what == 'os.environ':
++- return self._environ
++- if what == 'os':
++- return self._wrapped_os
++- # And subprocess, so that its functions use our os.environ
++- if what == 'subprocess':
++- return self._wrapped_subprocess
++- if what in ('subprocess.call', 'subprocess.check_call',
++- 'subprocess.check_output', 'subprocess.Popen'):
++- return getattr(self._wrapped_subprocess, what[len('subprocess.'):])
+++ return ReadOnlyNamespace(**wrapped_six)
+++
+++ def _get_one_import(self, _from, _import, _as, glob):
+++ """Perform the given import, placing the result into the dict glob."""
+++ if not _from and _import == '__builtin__':
+++ glob[_as or '__builtin__'] = __builtin__
+++ return
+++ if _from == '__builtin__':
+++ _from = 'six.moves.builtins'
+++ # The special `__sandbox__` module gives access to the sandbox
+++ # instance.
+++ if not _from and _import == '__sandbox__':
+++ glob[_as or _import] = self
+++ return
+++ if self._handle_wrapped_import(_from, _import, _as, glob):
+++ return
+++ # If we've gotten this far, we should just do a normal import.
++ # Until this proves to be a performance problem, just construct an
++ # import statement and execute it.
++- import_line = ''
++- if '.' in what:
++- _from, what = what.rsplit('.', 1)
++- if _from == '__builtin__' or _from.startswith('__builtin__.'):
++- _from = _from.replace('__builtin__', 'six.moves.builtins')
++- import_line += 'from %s ' % _from
++- if what == '__builtin__':
++- what = 'six.moves.builtins'
++- import_line += 'import %s as imported' % what
++- glob = {}
+++ import_line = '%simport %s%s' % (
+++ ('from %s ' % _from) if _from else '', _import,
+++ (' as %s' % _as) if _as else '')
++ exec_(import_line, {}, glob)
++- return glob['imported']
++
++ def _resolve_and_set(self, data, name, value, when=None):
++ # Don't set anything when --help was on the command line
+