summaryrefslogtreecommitdiffstats
path: root/scripts
diff options
context:
space:
mode:
Diffstat (limited to 'scripts')
-rwxr-xr-xscripts/checkpatch.pl12
-rw-r--r--scripts/mtest2make.py19
-rwxr-xr-xscripts/ninjatool.py3
3 files changed, 27 insertions, 7 deletions
diff --git a/scripts/checkpatch.pl b/scripts/checkpatch.pl
index 1ba8a3810b..6ed34970f9 100755
--- a/scripts/checkpatch.pl
+++ b/scripts/checkpatch.pl
@@ -2880,14 +2880,20 @@ sub process {
$herecurr);
}
-# check for %L{u,d,i} in strings
+# format strings checks
my $string;
while ($line =~ /(?:^|")([X\t]*)(?:"|$)/g) {
$string = substr($rawline, $-[1], $+[1] - $-[1]);
$string =~ s/%%/__/g;
+ # check for %L{u,d,i} in strings
if ($string =~ /(?<!%)%L[udi]/) {
ERROR("\%Ld/%Lu are not-standard C, use %lld/%llu\n" . $herecurr);
- last;
+ }
+ # check for %# or %0# in printf-style format strings
+ if ($string =~ /(?<!%)%0?#/) {
+ ERROR("Don't use '#' flag of printf format " .
+ "('%#') in format strings, use '0x' " .
+ "prefix instead\n" . $herecurr);
}
}
@@ -3005,7 +3011,7 @@ sub process {
return 1;
}
- if (!$is_patch) {
+ if (!$is_patch && $filename !~ /cover-letter\.patch$/) {
ERROR("Does not appear to be a unified-diff format patch\n");
}
diff --git a/scripts/mtest2make.py b/scripts/mtest2make.py
index 9cbb2e374d..c3489a4605 100644
--- a/scripts/mtest2make.py
+++ b/scripts/mtest2make.py
@@ -5,6 +5,7 @@
# Author: Paolo Bonzini <pbonzini@redhat.com>
from collections import defaultdict
+import itertools
import json
import os
import shlex
@@ -36,7 +37,7 @@ SPEED = quick
introspect = json.load(sys.stdin)
i = 0
-def process_tests(test, suites):
+def process_tests(test, targets, suites):
global i
env = ' '.join(('%s=%s' % (shlex.quote(k), shlex.quote(v))
for k, v in test['env'].items()))
@@ -58,12 +59,19 @@ def process_tests(test, suites):
i += 1
if test['workdir'] is not None:
print('.test.dir.%d := %s' % (i, shlex.quote(test['workdir'])))
+
+ if 'depends' in test:
+ deps = (targets.get(x, []) for x in test['depends'])
+ deps = itertools.chain.from_iterable(deps)
+ else:
+ deps = ['all']
+
print('.test.name.%d := %s' % (i, test['name']))
print('.test.driver.%d := %s' % (i, driver))
print('.test.env.%d := $(.test.env) %s' % (i, env))
print('.test.cmd.%d := %s' % (i, cmd))
print('.PHONY: run-test-%d' % (i,))
- print('run-test-%d: all' % (i,))
+ print('run-test-%d: %s' % (i, ' '.join(deps)))
print('\t@$(call .test.run,%d,$(.test.output-format))' % (i,))
test_suites = test['suite'] or ['default']
@@ -102,16 +110,19 @@ def emit_suite(name, suite, prefix):
print('.tests += $(.test.$(SPEED).%s)' % (target, ))
print('endif')
+targets = {t['id']: [os.path.relpath(f) for f in t['filename']]
+ for t in introspect['targets']}
+
testsuites = defaultdict(Suite)
for test in introspect['tests']:
- process_tests(test, testsuites)
+ process_tests(test, targets, testsuites)
emit_prolog(testsuites, 'check')
for name, suite in testsuites.items():
emit_suite(name, suite, 'check')
benchsuites = defaultdict(Suite)
for test in introspect['benchmarks']:
- process_tests(test, benchsuites)
+ process_tests(test, targets, benchsuites)
emit_prolog(benchsuites, 'bench')
for name, suite in benchsuites.items():
emit_suite(name, suite, 'bench')
diff --git a/scripts/ninjatool.py b/scripts/ninjatool.py
index 627a1cab45..6f0e35c727 100755
--- a/scripts/ninjatool.py
+++ b/scripts/ninjatool.py
@@ -908,6 +908,9 @@ class Ninja2Make(NinjaParserEventsWithVars):
else:
stamp = '%s@%s.stamp' % (rule, sha1_text(targets)[0:11])
self.print('%s: %s; @:' % (targets, stamp))
+ self.print('ifneq (%s, $(wildcard %s))' % (targets, targets))
+ self.print('.PHONY: %s' % (stamp, ))
+ self.print('endif')
self.print('%s: %s | %s; ${ninja-command-restat}' % (stamp, inputs, orderonly))
self.rule_targets[rule].append(stamp)
self.stamp_targets[rule].append(stamp)