Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Step:15-SP1
meson.10539
meson-restore-python3.4.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File meson-restore-python3.4.patch of Package meson.10539
--- a/mesonbuild/backend/ninjabackend.py +++ b/mesonbuild/backend/ninjabackend.py @@ -27,7 +27,7 @@ from .. import compilers from ..compilers import CompilerArgs from ..linkers import ArLinker from ..mesonlib import File, MesonException, OrderedSet -from ..mesonlib import get_compiler_for_source, has_path_sep +from ..mesonlib import get_compiler_for_source, has_path_sep, commonpath from .backends import CleanTrees, InstallData from ..build import InvalidArguments @@ -1157,8 +1157,8 @@ int dummy; # Check if the vala file is in a subdir of --basedir abs_srcbasedir = os.path.join(self.environment.get_source_dir(), target.get_subdir()) abs_vala_file = os.path.join(self.environment.get_build_dir(), vala_file) - if PurePath(os.path.commonpath((abs_srcbasedir, abs_vala_file))) == PurePath(abs_srcbasedir): - vala_c_subdir = PurePath(abs_vala_file).parent.relative_to(abs_srcbasedir) + if PurePath(commonpath((abs_srcbasedir, abs_vala_file))) == PurePath(abs_srcbasedir): + vala_c_subdir = str(PurePath(abs_vala_file).parent.relative_to(abs_srcbasedir)) vala_c_file = os.path.join(str(vala_c_subdir), vala_c_file) else: path_to_target = os.path.join(self.build_to_src, target.get_subdir()) --- a/mesonbuild/coredata.py +++ b/mesonbuild/coredata.py @@ -17,7 +17,7 @@ import pickle, os, uuid import sys from pathlib import PurePath from collections import OrderedDict -from .mesonlib import MesonException +from .mesonlib import MesonException, commonpath from .mesonlib import default_libdir, default_libexecdir, default_prefix import ast import argparse @@ -261,7 +261,7 @@ class CoreData: # commonpath will always return a path in the native format, so we # must use pathlib.PurePath to do the same conversion before # comparing. - if os.path.commonpath([value, prefix]) != str(PurePath(prefix)): + if commonpath([value, prefix]) != str(PurePath(prefix)): m = 'The value of the {!r} option is {!r} which must be a ' \ 'subdir of the prefix {!r}.\nNote that if you pass a ' \ 'relative path, it is assumed to be a subdir of prefix.' --- a/mesonbuild/mesonlib.py +++ b/mesonbuild/mesonlib.py @@ -972,6 +972,30 @@ def detect_subprojects(spdir_name, curre result[basename] = [trial] return result +def commonpath(paths): + ''' + For use on Python 3.4 where os.path.commonpath is not available. + ''' + if sys.version_info >= (3, 5): + return os.path.commonpath(paths) + + import pathlib + if not paths: + raise ValueError('commonpath() arg is an empty sequence') + common = pathlib.PurePath(paths[0]) + for path in paths[1:]: + new = [] + path = pathlib.PurePath(path) + for c, p in zip(common.parts, path.parts): + if c != p: + break + new.append(c) + if not new: + raise ValueError("Can't mix absolute and relative paths") from None + new = os.path.join(*new) + common = pathlib.PurePath(new) + return str(common) + class OrderedSet(collections.MutableSet): """A set that preserves the order in which items are added, by first insertion. --- a/mesonbuild/mesonmain.py +++ b/mesonbuild/mesonmain.py @@ -257,8 +257,8 @@ def run_script_command(args): return cmdfunc(cmdargs) def run(original_args, mainfile=None): - if sys.version_info < (3, 5): - print('Meson works correctly only with python 3.5+.') + if sys.version_info < (3, 4): + print('Meson works correctly only with python 3.4+.') print('You have python %s.' % sys.version) print('Please update your environment') return 1 --- a/run_unittests.py +++ b/run_unittests.py @@ -21,6 +21,7 @@ import tempfile import textwrap import os import shutil +import sys import unittest from unittest import mock from configparser import ConfigParser @@ -476,6 +477,24 @@ class InternalTests(unittest.TestCase): deps.add_pub_reqs([mock]) self.assertEqual(deps.format_reqs(deps.pub_reqs), "some_name") + def test_commonpath(self): + from os.path import sep + commonpath = mesonbuild.mesonlib.commonpath + self.assertRaises(ValueError, commonpath, []) + self.assertEqual(commonpath(['/usr', '/usr']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/usr/']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/./', '/usr/bin']), sep + 'usr') + self.assertEqual(commonpath(['/usr/bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr//bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr/./bin', '/usr/bin']), sep + 'usr' + sep + 'bin') + self.assertEqual(commonpath(['/usr/local', '/usr/lib']), sep + 'usr') + self.assertEqual(commonpath(['/usr', '/bin']), sep) + prefix = '/some/path/to/prefix' + libdir = '/some/path/to/prefix/libdir' + self.assertEqual(commonpath([prefix, libdir]), str(PurePath(prefix))) + class BasePlatformTests(unittest.TestCase): def setUp(self): @@ -556,9 +575,16 @@ class BasePlatformTests(unittest.TestCas # If this call hangs CI will just abort. It is very hard to distinguish # between CI issue and test bug in that case. Set timeout and fail loud # instead. - p = subprocess.run(command, stdout=subprocess.PIPE, - stderr=subprocess.STDOUT, env=os.environ.copy(), - universal_newlines=True, cwd=workdir, timeout=60 * 5) + if sys.version_info >= (3, 5): + p = subprocess.run(command, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, env=os.environ.copy(), + universal_newlines=True, cwd=workdir, + timeout=60 * 5) + else: + p = subprocess.Popen(command, stdout=subprocess.PIPE, + stderr=subprocess.STDOUT, env=os.environ.copy(), + universal_newlines=True, cwd=workdir) + p.stdout = p.communicate(timeout=60 * 5)[0] print(p.stdout) if p.returncode != 0: if 'MESON_SKIP_TEST' in p.stdout: @@ -2940,8 +2966,13 @@ endian = 'little' self.init(testdir) myenv = os.environ.copy() myenv['PKG_CONFIG_PATH'] = self.privatedir - ro = subprocess.run(['pkg-config', '--libs', 'libsomething'], stdout=subprocess.PIPE, - env=myenv) + if sys.version_info >= (3, 5): + ro = subprocess.run(['pkg-config', '--libs', 'libsomething'], + stdout=subprocess.PIPE, env=myenv) + else: + ro = subprocess.Popen(['pkg-config', '--libs', 'libsomething'], + stdout=subprocess.PIPE, env=myenv) + ro.stdout = ro.communicate()[0] self.assertEqual(ro.returncode, 0) self.assertIn(b'-lgobject-2.0', ro.stdout) self.assertIn(b'-lgio-2.0', ro.stdout) --- a/setup.py +++ b/setup.py @@ -19,9 +19,9 @@ import sys from mesonbuild.coredata import version -if sys.version_info < (3, 5, 0): +if sys.version_info < (3, 4, 0): print('Tried to install with an unsupported version of Python. ' - 'Meson requires Python 3.5.0 or greater') + 'Meson requires Python 3.4.0 or greater') sys.exit(1) # We need to support Python installations that have nothing but the basic --- "a/test cases/common/193 find override/subdir/converter.py" +++ "b/test cases/common/193 find override/subdir/converter.py" @@ -10,6 +10,7 @@ ftempl = '''int %s() { } ''' -d = pathlib.Path(ifilename).read_text().split('\n')[0].strip() - -pathlib.Path(ofilename).write_text(ftempl % d) +with pathlib.Path(ifilename).open('r') as f: + d = f.readline().split('\n')[0].strip() +with pathlib.Path(ofilename).open('w') as f: + f.write(ftempl % d) --- "a/test cases/common/193 find override/subdir/gencodegen.py.in" +++ "b/test cases/common/193 find override/subdir/gencodegen.py.in" @@ -10,6 +10,7 @@ ftempl = '''int %s() { } ''' -d = pathlib.Path(ifilename).read_text().split('\n')[0].strip() - -pathlib.Path(ofilename).write_text(ftempl % d) +with pathlib.Path(ifilename).open('r') as f: + d = f.readline().split('\n')[0].strip() +with pathlib.Path(ofilename).open('w') as f: + f.write(ftempl % d)
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor