aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild
diff options
context:
space:
mode:
authorMichael Brockus <55331536+michaelbadcrumble@users.noreply.github.com>2020-03-03 11:45:43 -0800
committerGitHub <noreply@github.com>2020-03-03 21:45:43 +0200
commit98ddd52ceddb29e1c4164de47bfb2448ee1ebffe (patch)
treefdee8651ee8a1f8048fbe3d3c18bd9dad6488cc9 /mesonbuild
parent21e543fea8ffd1a968f67e23a8a85f6c5e5dde54 (diff)
downloadmeson-98ddd52ceddb29e1c4164de47bfb2448ee1ebffe.zip
meson-98ddd52ceddb29e1c4164de47bfb2448ee1ebffe.tar.gz
meson-98ddd52ceddb29e1c4164de47bfb2448ee1ebffe.tar.bz2
Cherry-picking - (rm python2 % add python3 .format) (#6725)
Diffstat (limited to 'mesonbuild')
-rw-r--r--mesonbuild/build.py35
-rw-r--r--mesonbuild/mdist.py6
-rw-r--r--mesonbuild/minstall.py18
-rw-r--r--mesonbuild/msetup.py8
-rwxr-xr-xmesonbuild/msubprojects.py10
-rw-r--r--mesonbuild/mtest.py58
6 files changed, 65 insertions, 70 deletions
diff --git a/mesonbuild/build.py b/mesonbuild/build.py
index 89fd86a..48d21b1 100644
--- a/mesonbuild/build.py
+++ b/mesonbuild/build.py
@@ -341,9 +341,9 @@ class Target:
def __init__(self, name, subdir, subproject, build_by_default, for_machine: MachineChoice):
if has_path_sep(name):
# Fix failing test 53 when this becomes an error.
- mlog.warning('''Target "%s" has a path separator in its name.
+ mlog.warning('''Target "{}" has a path separator in its name.
This is not supported, it can cause unexpected failures and will become
-a hard error in the future.''' % name)
+a hard error in the future.'''.format(name))
self.name = name
self.subdir = subdir
self.subproject = subproject
@@ -502,7 +502,7 @@ class BuildTarget(Target):
self.check_unknown_kwargs(kwargs)
self.process_compilers()
if not any([self.sources, self.generated, self.objects, self.link_whole]):
- raise InvalidArguments('Build target %s has no sources.' % name)
+ raise InvalidArguments('Build target {} has no sources.'.format(name))
self.process_compilers_late()
self.validate_sources()
self.validate_install(environment)
@@ -530,8 +530,7 @@ class BuildTarget(Target):
if k not in known_kwargs:
unknowns.append(k)
if len(unknowns) > 0:
- mlog.warning('Unknown keyword argument(s) in target %s: %s.' %
- (self.name, ', '.join(unknowns)))
+ mlog.warning('Unknown keyword argument(s) in target {}: {}.'.format(self.name, ', '.join(unknowns)))
def process_objectlist(self, objects):
assert(isinstance(objects, list))
@@ -756,7 +755,7 @@ class BuildTarget(Target):
raise MesonException('Object extraction arguments must be strings or Files.')
# FIXME: It could be a generated source
if src not in self.sources:
- raise MesonException('Tried to extract unknown source %s.' % src)
+ raise MesonException('Tried to extract unknown source {}.'.format(src))
obj_src.append(src)
return ExtractedObjects(self, obj_src)
@@ -901,7 +900,7 @@ This will become a hard error in a future Meson release.''')
assert(isinstance(i, File))
trial = os.path.join(environment.get_source_dir(), i.subdir, i.fname)
if not(os.path.isfile(trial)):
- raise InvalidArguments('Tried to add non-existing extra file %s.' % i)
+ raise InvalidArguments('Tried to add non-existing extra file {}.'.format(i))
self.extra_files = extra_files
self.install_rpath = kwargs.get('install_rpath', '')
if not isinstance(self.install_rpath, str):
@@ -915,7 +914,7 @@ This will become a hard error in a future Meson release.''')
raise InvalidArguments('Resource argument is not a string.')
trial = os.path.join(environment.get_source_dir(), self.subdir, r)
if not os.path.isfile(trial):
- raise InvalidArguments('Tried to add non-existing resource %s.' % r)
+ raise InvalidArguments('Tried to add non-existing resource {}.'.format(r))
self.resources = resources
if 'name_prefix' in kwargs:
name_prefix = kwargs['name_prefix']
@@ -964,8 +963,7 @@ This will become a hard error in a future Meson release.''')
if self.gnu_symbol_visibility != '':
permitted = ['default', 'internal', 'hidden', 'protected', 'inlineshidden']
if self.gnu_symbol_visibility not in permitted:
- raise InvalidArguments('GNU symbol visibility arg %s not one of: %s',
- self.symbol_visibility, ', '.join(permitted))
+ raise InvalidArguments('GNU symbol visibility arg {} not one of: {}'.format(self.symbol_visibility, ', '.join(permitted)))
def _extract_pic_pie(self, kwargs, arg):
# Check if we have -fPIC, -fpic, -fPIE, or -fpie in cflags
@@ -1146,7 +1144,7 @@ You probably should put it in link_with instead.''')
return
elif len(pchlist) == 1:
if not environment.is_header(pchlist[0]):
- raise InvalidArguments('PCH argument %s is not a header.' % pchlist[0])
+ raise InvalidArguments('PCH argument {} is not a header.'.format(pchlist[0]))
elif len(pchlist) == 2:
if environment.is_header(pchlist[0]):
if not environment.is_source(pchlist[1]):
@@ -1156,7 +1154,7 @@ You probably should put it in link_with instead.''')
raise InvalidArguments('PCH definition must contain one header and at most one source.')
pchlist = [pchlist[1], pchlist[0]]
else:
- raise InvalidArguments('PCH argument %s is of unknown type.' % pchlist[0])
+ raise InvalidArguments('PCH argument {} is of unknown type.'.format(pchlist[0]))
if (os.path.dirname(pchlist[0]) != os.path.dirname(pchlist[1])):
raise InvalidArguments('PCH files must be stored in the same folder.')
@@ -1168,7 +1166,7 @@ You probably should put it in link_with instead.''')
if not isinstance(f, str):
raise MesonException('PCH arguments must be strings.')
if not os.path.isfile(os.path.join(self.environment.source_dir, self.subdir, f)):
- raise MesonException('File %s does not exist.' % f)
+ raise MesonException('File {} does not exist.'.format(f))
self.pch[language] = pchlist
def add_include_dirs(self, args, set_is_system: T.Optional[str] = None):
@@ -2018,8 +2016,7 @@ class CustomTarget(Target):
if k not in CustomTarget.known_kwargs:
unknowns.append(k)
if len(unknowns) > 0:
- mlog.warning('Unknown keyword arguments in target %s: %s' %
- (self.name, ', '.join(unknowns)))
+ mlog.warning('Unknown keyword arguments in target {}: {}'.format(self.name, ', '.join(unknowns)))
def get_default_install_dir(self, environment):
return None
@@ -2169,8 +2166,8 @@ class CustomTarget(Target):
while hasattr(ed, 'held_object'):
ed = ed.held_object
if not isinstance(ed, (CustomTarget, BuildTarget)):
- raise InvalidArguments('Can only depend on toplevel targets: custom_target or build_target (executable or a library) got: %s(%s)'
- % (type(ed), ed))
+ raise InvalidArguments('Can only depend on toplevel targets: custom_target or build_target (executable or a library) got: {}({})'
+ .format(type(ed), ed))
self.extra_depends.append(ed)
for i in depend_files:
if isinstance(i, (File, str)):
@@ -2310,10 +2307,10 @@ class Jar(BuildTarget):
super().__init__(name, subdir, subproject, for_machine, sources, objects, environment, kwargs)
for s in self.sources:
if not s.endswith('.java'):
- raise InvalidArguments('Jar source %s is not a java file.' % s)
+ raise InvalidArguments('Jar source {} is not a java file.'.format(s))
for t in self.link_targets:
if not isinstance(t, Jar):
- raise InvalidArguments('Link target %s is not a jar target.' % t)
+ raise InvalidArguments('Link target {} is not a jar target.'.format(t))
self.filename = self.name + '.jar'
self.outputs = [self.filename]
self.java_args = kwargs.get('java_args', [])
diff --git a/mesonbuild/mdist.py b/mesonbuild/mdist.py
index bfff50a..ea0583e 100644
--- a/mesonbuild/mdist.py
+++ b/mesonbuild/mdist.py
@@ -46,7 +46,7 @@ def create_hash(fname):
m = hashlib.sha256()
m.update(open(fname, 'rb').read())
with open(hashname, 'w') as f:
- f.write('%s %s\n' % (m.hexdigest(), os.path.basename(fname)))
+ f.write('{} {}\n'.format(m.hexdigest(), os.path.basename(fname)))
def del_gitfiles(dirname):
@@ -195,7 +195,7 @@ def run_dist_steps(meson_command, unpacked_src_dir, builddir, installdir, ninja_
return 0
def check_dist(packagename, meson_command, extra_meson_args, bld_root, privdir):
- print('Testing distribution package %s' % packagename)
+ print('Testing distribution package {}'.format(packagename))
unpackdir = os.path.join(privdir, 'dist-unpack')
builddir = os.path.join(privdir, 'dist-build')
installdir = os.path.join(privdir, 'dist-install')
@@ -220,7 +220,7 @@ def check_dist(packagename, meson_command, extra_meson_args, bld_root, privdir):
windows_proof_rmtree(unpackdir)
windows_proof_rmtree(builddir)
windows_proof_rmtree(installdir)
- print('Distribution package %s tested' % packagename)
+ print('Distribution package {} tested'.format(packagename))
return ret
def determine_archives_to_generate(options):
diff --git a/mesonbuild/minstall.py b/mesonbuild/minstall.py
index 64bcca2..ace0569 100644
--- a/mesonbuild/minstall.py
+++ b/mesonbuild/minstall.py
@@ -248,7 +248,7 @@ class Installer:
raise RuntimeError('Destination {!r} already exists and is not '
'a file'.format(to_file))
if self.should_preserve_existing_file(from_file, to_file):
- append_to_log(self.lf, '# Preserving old file %s\n' % to_file)
+ append_to_log(self.lf, '# Preserving old file {}\n'.format(to_file))
self.preserved_file_count += 1
return False
os.remove(to_file)
@@ -257,7 +257,7 @@ class Installer:
dirmaker, outdir = makedirs
# Create dirs if needed
dirmaker.makedirs(outdir, exist_ok=True)
- self.log('Installing %s to %s' % (from_file, outdir))
+ self.log('Installing {} to {}'.format(from_file, outdir))
if os.path.islink(from_file):
if not os.path.exists(from_file):
# Dangling symlink. Replicate as is.
@@ -299,9 +299,9 @@ class Installer:
each element of the set is a path relative to src_dir.
'''
if not os.path.isabs(src_dir):
- raise ValueError('src_dir must be absolute, got %s' % src_dir)
+ raise ValueError('src_dir must be absolute, got {}'.format(src_dir))
if not os.path.isabs(dst_dir):
- raise ValueError('dst_dir must be absolute, got %s' % dst_dir)
+ raise ValueError('dst_dir must be absolute, got {}'.format(dst_dir))
if exclude is not None:
exclude_files, exclude_dirs = exclude
else:
@@ -319,7 +319,7 @@ class Installer:
if os.path.isdir(abs_dst):
continue
if os.path.exists(abs_dst):
- print('Tried to copy directory %s but a file of that name already exists.' % abs_dst)
+ print('Tried to copy directory {} but a file of that name already exists.'.format(abs_dst))
sys.exit(1)
data.dirmaker.makedirs(abs_dst)
shutil.copystat(abs_src, abs_dst)
@@ -331,7 +331,7 @@ class Installer:
continue
abs_dst = os.path.join(dst_dir, filepart)
if os.path.isdir(abs_dst):
- print('Tried to copy file %s but a directory of that name already exists.' % abs_dst)
+ print('Tried to copy file {} but a directory of that name already exists.'.format(abs_dst))
sys.exit(1)
parent_dir = os.path.dirname(abs_dst)
if not os.path.isdir(parent_dir):
@@ -379,7 +379,7 @@ class Installer:
for (src_dir, dst_dir, mode, exclude) in d.install_subdirs:
self.did_install_something = True
full_dst_dir = get_destdir_path(d, dst_dir)
- self.log('Installing subdir %s to %s' % (src_dir, full_dst_dir))
+ self.log('Installing subdir {} to {}'.format(src_dir, full_dst_dir))
d.dirmaker.makedirs(full_dst_dir, exist_ok=True)
self.do_copydir(d, src_dir, full_dst_dir, exclude, mode)
@@ -473,8 +473,8 @@ class Installer:
ps, stdo, stde = Popen_safe(d.strip_bin + [outname])
if ps.returncode != 0:
print('Could not strip file.\n')
- print('Stdout:\n%s\n' % stdo)
- print('Stderr:\n%s\n' % stde)
+ print('Stdout:\n{}\n'.format(stdo))
+ print('Stderr:\n{}\n'.format(stde))
sys.exit(1)
if fname.endswith('.js'):
# Emscripten outputs js files and optionally a wasm file.
diff --git a/mesonbuild/msetup.py b/mesonbuild/msetup.py
index a2b5164..39cacea 100644
--- a/mesonbuild/msetup.py
+++ b/mesonbuild/msetup.py
@@ -118,18 +118,18 @@ class MesonApp:
if not os.path.exists(ndir2):
os.makedirs(ndir2)
if not stat.S_ISDIR(os.stat(ndir1).st_mode):
- raise MesonException('%s is not a directory' % dir1)
+ raise MesonException('{} is not a directory'.format(dir1))
if not stat.S_ISDIR(os.stat(ndir2).st_mode):
- raise MesonException('%s is not a directory' % dir2)
+ raise MesonException('{} is not a directory'.format(dir2))
if os.path.samefile(dir1, dir2):
raise MesonException('Source and build directories must not be the same. Create a pristine build directory.')
if self.has_build_file(ndir1):
if self.has_build_file(ndir2):
- raise MesonException('Both directories contain a build file %s.' % environment.build_filename)
+ raise MesonException('Both directories contain a build file {}.'.format(environment.build_filename))
return ndir1, ndir2
if self.has_build_file(ndir2):
return ndir2, ndir1
- raise MesonException('Neither directory contains a build file %s.' % environment.build_filename)
+ raise MesonException('Neither directory contains a build file {}.'.format(environment.build_filename))
def validate_dirs(self, dir1: str, dir2: str, reconfigure: bool, wipe: bool) -> T.Tuple[str, str]:
(src_dir, build_dir) = self.validate_core_dirs(dir1, dir2)
diff --git a/mesonbuild/msubprojects.py b/mesonbuild/msubprojects.py
index b1c79b8..9a8b0cf 100755
--- a/mesonbuild/msubprojects.py
+++ b/mesonbuild/msubprojects.py
@@ -129,7 +129,7 @@ def update_svn(wrap, repo_dir, options):
subprocess.check_call(['svn', 'update', '-r', revno], cwd=repo_dir)
def update(wrap, repo_dir, options):
- mlog.log('Updating %s...' % wrap.name)
+ mlog.log('Updating {}...'.format(wrap.name))
if wrap.type == 'file':
update_file(wrap, repo_dir, options)
elif wrap.type == 'git':
@@ -148,7 +148,7 @@ def checkout(wrap, repo_dir, options):
cmd = ['checkout', branch_name, '--']
if options.b:
cmd.insert(1, '-b')
- mlog.log('Checkout %s in %s...' % (branch_name, wrap.name))
+ mlog.log('Checkout {} in {}...'.format(branch_name, wrap.name))
try:
git_output(cmd, repo_dir)
git_show(repo_dir)
@@ -157,7 +157,7 @@ def checkout(wrap, repo_dir, options):
mlog.log(' -> ', mlog.red(out))
def download(wrap, repo_dir, options):
- mlog.log('Download %s...' % wrap.name)
+ mlog.log('Download {}...'.format(wrap.name))
if os.path.isdir(repo_dir):
mlog.log(' -> Already downloaded')
return
@@ -169,7 +169,7 @@ def download(wrap, repo_dir, options):
mlog.log(' ->', mlog.red(str(e)))
def foreach(wrap, repo_dir, options):
- mlog.log('Executing command in %s' % repo_dir)
+ mlog.log('Executing command in {}'.format(repo_dir))
if not os.path.isdir(repo_dir):
mlog.log(' -> Not downloaded yet')
return
@@ -179,7 +179,7 @@ def foreach(wrap, repo_dir, options):
cwd=repo_dir).decode()
mlog.log(out, end='')
except subprocess.CalledProcessError as e:
- err_message = "Command '%s' returned non-zero exit status %d." % (" ".join(e.cmd), e.returncode)
+ err_message = "Command '{}' returned non-zero exit status {}.".format(" ".join(e.cmd), e.returncode)
out = e.output.decode()
mlog.log(' -> ', mlog.red(err_message))
mlog.log(out, end='')
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index 36caec6..32b87c6 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -67,7 +67,7 @@ def determine_worker_count() -> int:
try:
num_workers = int(os.environ[varname])
except ValueError:
- print('Invalid value in %s, using 1 thread.' % varname)
+ print('Invalid value in {}, using 1 thread.'.format(varname))
num_workers = 1
else:
try:
@@ -136,20 +136,20 @@ def returncode_to_status(retcode: int) -> str:
signame = signal.Signals(signum).name
except ValueError:
signame = 'SIGinvalid'
- return '(killed by signal %d %s)' % (signum, signame)
+ return '(killed by signal {} {})'.format(signum, signame)
if retcode <= 128:
- return '(exit status %d)' % (retcode,)
+ return '(exit status {})'.format((retcode,))
signum = retcode - 128
try:
signame = signal.Signals(signum).name
except ValueError:
signame = 'SIGinvalid'
- return '(exit status %d or signal %d %s)' % (retcode, signum, signame)
+ return '(exit status {} or signal {} {})'.format(retcode, signum, signame)
def env_tuple_to_str(env: T.Iterable[T.Tuple[str, str]]) -> str:
- return ''.join(["%s='%s' " % (k, v) for k, v in env])
+ return ''.join(["{}='{}' ".format(k, v) for k, v in env])
class TestException(MesonException):
@@ -204,7 +204,7 @@ class TAPParser:
yield self.Test(num, name, TestResult.UNEXPECTEDPASS if ok else TestResult.EXPECTEDFAIL, explanation)
return
else:
- yield self.Error('invalid directive "%s"' % (directive,))
+ yield self.Error('invalid directive "{}"'.format(directive,))
yield self.Test(num, name, TestResult.OK if ok else TestResult.FAIL, explanation)
@@ -304,16 +304,16 @@ class TAPParser:
if len(line) == 0:
continue
- yield self.Error('unexpected input at line %d' % (lineno,))
+ yield self.Error('unexpected input at line {}'.format((lineno,)))
if state == self._YAML:
yield self.Error('YAML block not terminated (started on line {})'.format(yaml_lineno))
if not bailed_out and plan and num_tests != plan.count:
if num_tests < plan.count:
- yield self.Error('Too few tests run (expected %d, got %d)' % (plan.count, num_tests))
+ yield self.Error('Too few tests run (expected {}, got {})'.format(plan.count, num_tests))
else:
- yield self.Error('Too many tests run (expected %d, got %d)' % (plan.count, num_tests))
+ yield self.Error('Too many tests run (expected {}, got {})'.format(plan.count, num_tests))
class TestRun:
@@ -358,7 +358,7 @@ class TestRun:
if returncode != 0:
res = TestResult.ERROR
- stde += '\n(test program exited with status code %d)' % (returncode,)
+ stde += '\n(test program exited with status code {})'.format(returncode,)
if res is None:
# Now determine the overall result of the test based on the outcome of the subcases
@@ -562,7 +562,7 @@ class SingleTestRunner:
print('{} time out (After {} seconds)'.format(self.test.name, timeout))
timed_out = True
except KeyboardInterrupt:
- mlog.warning('CTRL-C detected while running %s' % (self.test.name))
+ mlog.warning('CTRL-C detected while running {}'.format(self.test.name))
kill_test = True
finally:
if self.options.gdb:
@@ -671,12 +671,12 @@ class TestHarness:
def merge_suite_options(self, options: argparse.Namespace, test: 'TestSerialisation') -> T.Dict[str, str]:
if ':' in options.setup:
if options.setup not in self.build_data.test_setups:
- sys.exit("Unknown test setup '%s'." % options.setup)
+ sys.exit("Unknown test setup '{}'.".format(options.setup))
current = self.build_data.test_setups[options.setup]
else:
full_name = test.project_name + ":" + options.setup
if full_name not in self.build_data.test_setups:
- sys.exit("Test setup '%s' not found from project '%s'." % (options.setup, test.project_name))
+ sys.exit("Test setup '{}' not found from project '{}'.".format(options.setup, test.project_name))
current = self.build_data.test_setups[full_name]
if not options.gdb:
options.gdb = current.gdb
@@ -722,17 +722,16 @@ class TestHarness:
def print_stats(self, numlen: int, tests: T.List['TestSerialisation'],
name: str, result: TestRun, i: int) -> None:
- startpad = ' ' * (numlen - len('%d' % (i + 1)))
- num = '%s%d/%d' % (startpad, i + 1, len(tests))
+ startpad = ' ' * (numlen - len('{}'.format(i + 1)))
+ num = '{}{}/{}'.format(startpad, i + 1, len(tests))
padding1 = ' ' * (38 - len(name))
padding2 = ' ' * (8 - len(result.res.value))
status = ''
if result.res is TestResult.FAIL:
status = returncode_to_status(result.returncode)
- result_str = '%s %s %s%s%s%5.2f s %s' % \
- (num, name, padding1, result.res.value, padding2, result.duration,
- status)
+ result_str = '{} {} {}{}{}{:5} s {}'.format(num, name, padding1, result.res.value,
+ padding2, result.duration, status)
ok_statuses = (TestResult.OK, TestResult.EXPECTEDFAIL)
bad_statuses = (TestResult.FAIL, TestResult.TIMEOUT, TestResult.UNEXPECTEDPASS,
TestResult.ERROR)
@@ -758,14 +757,14 @@ class TestHarness:
def print_summary(self) -> None:
msg = '''
-Ok: %4d
-Expected Fail: %4d
-Fail: %4d
-Unexpected Pass: %4d
-Skipped: %4d
-Timeout: %4d
-''' % (self.success_count, self.expectedfail_count, self.fail_count,
- self.unexpectedpass_count, self.skip_count, self.timeout_count)
+Ok: {:<4}
+Expected Fail: {:<4}
+Fail: {:<4}
+Unexpected Pass: {:<4}
+Skipped: {:<4}
+Timeout: {:<4}
+'''.format(self.success_count, self.expectedfail_count, self.fail_count,
+ self.unexpectedpass_count, self.skip_count, self.timeout_count)
print(msg)
if self.logfile:
self.logfile.write(msg)
@@ -891,8 +890,7 @@ Timeout: %4d
self.jsonlogfile = open(self.jsonlogfilename, 'w', encoding='utf-8', errors='replace')
self.logfile = open(self.logfilename, 'w', encoding='utf-8', errors='surrogateescape')
- self.logfile.write('Log of Meson test suite run on %s\n\n'
- % datetime.datetime.now().isoformat())
+ self.logfile.write('Log of Meson test suite run on {}\n\n'.format(datetime.datetime.now().isoformat()))
inherit_env = env_tuple_to_str(os.environ.items())
self.logfile.write('Inherited environment: {}\n\n'.format(inherit_env))
@@ -922,7 +920,7 @@ Timeout: %4d
def run_tests(self, tests: T.List['TestSerialisation']) -> None:
executor = None
futures = [] # type: T.List[T.Tuple[conc.Future[TestRun], int, T.List[TestSerialisation], str, int]]
- numlen = len('%d' % len(tests))
+ numlen = len('{}'.format(len(tests)))
self.open_log_files()
startdir = os.getcwd()
if self.options.wd:
@@ -956,7 +954,7 @@ Timeout: %4d
self.print_collected_logs()
if self.logfilename:
- print('Full log written to %s' % self.logfilename)
+ print('Full log written to {}'.format(self.logfilename))
finally:
os.chdir(startdir)