summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorTom Rini <trini@konsulko.com>2016-03-14 19:21:44 -0400
committerTom Rini <trini@konsulko.com>2016-03-14 19:21:44 -0400
commit88033d737d9f46e7eebda6a8f9770957eb9aae9c (patch)
tree0b7c3bc6caa5ab4b7f8e88f05ce51ace87f25890 /tools
parent9f0f432c0aea1e70959a0c06938459d3175a36b0 (diff)
parent608e399fdef82e983db44c5cb8f5e772bba870e2 (diff)
Merge git://git.denx.de/u-boot-dm
Diffstat (limited to 'tools')
-rw-r--r--tools/buildman/control.py3
-rw-r--r--tools/buildman/toolchain.py50
-rw-r--r--tools/fdtgrep.c14
-rw-r--r--tools/patman/patchstream.py2
-rwxr-xr-xtools/patman/patman.py3
5 files changed, 51 insertions, 21 deletions
diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 8b3cd30c00..c2c54bf0e8 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -101,7 +101,8 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
pager = os.getenv('PAGER')
if not pager:
pager = 'more'
- fname = os.path.join(os.path.dirname(sys.argv[0]), 'README')
+ fname = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),
+ 'README')
command.Run(pager, fname)
return 0
diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py
index e33e10532e..7bcc0af3e9 100644
--- a/tools/buildman/toolchain.py
+++ b/tools/buildman/toolchain.py
@@ -14,6 +14,8 @@ import urllib2
import bsettings
import command
+PRIORITY_CALC = 0
+
# Simple class to collect links from a page
class MyHTMLParser(HTMLParser):
def __init__(self, arch):
@@ -50,13 +52,18 @@ class Toolchain:
cross: Cross compile string, e.g. 'arm-linux-'
arch: Architecture of toolchain as determined from the first
component of the filename. E.g. arm-linux-gcc becomes arm
+ priority: Toolchain priority (0=highest, 20=lowest)
"""
- def __init__(self, fname, test, verbose=False):
+ def __init__(self, fname, test, verbose=False, priority=PRIORITY_CALC,
+ arch=None):
"""Create a new toolchain object.
Args:
fname: Filename of the gcc component
test: True to run the toolchain to test it
+ verbose: True to print out the information
+ priority: Priority to use for this toolchain, or PRIORITY_CALC to
+ calculate it
"""
self.gcc = fname
self.path = os.path.dirname(fname)
@@ -69,12 +76,19 @@ class Toolchain:
# The architecture is the first part of the name
pos = self.cross.find('-')
- self.arch = self.cross[:pos] if pos != -1 else 'sandbox'
+ if arch:
+ self.arch = arch
+ else:
+ self.arch = self.cross[:pos] if pos != -1 else 'sandbox'
env = self.MakeEnvironment(False)
# As a basic sanity check, run the C compiler with --version
cmd = [fname, '--version']
+ if priority == PRIORITY_CALC:
+ self.priority = self.GetPriority(fname)
+ else:
+ self.priority = priority
if test:
result = command.RunPipe([cmd], capture=True, env=env,
raise_on_error=False)
@@ -82,7 +96,8 @@ class Toolchain:
if verbose:
print 'Tool chain test: ',
if self.ok:
- print 'OK'
+ print "OK, arch='%s', priority %d" % (self.arch,
+ self.priority)
else:
print 'BAD'
print 'Command: ', cmd
@@ -90,7 +105,6 @@ class Toolchain:
print result.stderr
else:
self.ok = True
- self.priority = self.GetPriority(fname)
def GetPriority(self, fname):
"""Return the priority of the toolchain.
@@ -101,15 +115,15 @@ class Toolchain:
Args:
fname: Filename of toolchain
Returns:
- Priority of toolchain, 0=highest, 20=lowest.
+ Priority of toolchain, PRIORITY_CALC=highest, 20=lowest.
"""
priority_list = ['-elf', '-unknown-linux-gnu', '-linux',
'-none-linux-gnueabi', '-uclinux', '-none-eabi',
'-gentoo-linux-gnu', '-linux-gnueabi', '-le-linux', '-uclinux']
for prio in range(len(priority_list)):
if priority_list[prio] in fname:
- return prio
- return prio
+ return PRIORITY_CALC + prio
+ return PRIORITY_CALC + prio
def MakeEnvironment(self, full_path):
"""Returns an environment for using the toolchain.
@@ -155,8 +169,8 @@ class Toolchains:
"""
toolchains = bsettings.GetItems('toolchain')
if not toolchains:
- print ("Warning: No tool chains - please add a [toolchain] section"
- " to your buildman config file %s. See README for details" %
+ print ('Warning: No tool chains - please add a [toolchain] section'
+ ' to your buildman config file %s. See README for details' %
bsettings.config_fname)
paths = []
@@ -170,7 +184,8 @@ class Toolchains:
def GetSettings(self):
self.paths += self.GetPathList()
- def Add(self, fname, test=True, verbose=False):
+ def Add(self, fname, test=True, verbose=False, priority=PRIORITY_CALC,
+ arch=None):
"""Add a toolchain to our list
We select the given toolchain as our preferred one for its
@@ -179,14 +194,21 @@ class Toolchains:
Args:
fname: Filename of toolchain's gcc driver
test: True to run the toolchain to test it
+ priority: Priority to use for this toolchain
+ arch: Toolchain architecture, or None if not known
"""
- toolchain = Toolchain(fname, test, verbose)
+ toolchain = Toolchain(fname, test, verbose, priority, arch)
add_it = toolchain.ok
if toolchain.arch in self.toolchains:
add_it = (toolchain.priority <
self.toolchains[toolchain.arch].priority)
if add_it:
self.toolchains[toolchain.arch] = toolchain
+ elif verbose:
+ print ("Toolchain '%s' at priority %d will be ignored because "
+ "another toolchain for arch '%s' has priority %d" %
+ (toolchain.gcc, toolchain.priority, toolchain.arch,
+ self.toolchains[toolchain.arch].priority))
def ScanPath(self, path, verbose):
"""Scan a path for a valid toolchain
@@ -367,14 +389,14 @@ class Toolchains:
Full path to the downloaded archive file in that directory,
or None if there was an error while downloading
"""
- print "Downloading: %s" % url
+ print 'Downloading: %s' % url
leaf = url.split('/')[-1]
tmpdir = tempfile.mkdtemp('.buildman')
response = urllib2.urlopen(url)
fname = os.path.join(tmpdir, leaf)
fd = open(fname, 'wb')
meta = response.info()
- size = int(meta.getheaders("Content-Length")[0])
+ size = int(meta.getheaders('Content-Length')[0])
done = 0
block_size = 1 << 16
status = ''
@@ -388,7 +410,7 @@ class Toolchains:
done += len(buffer)
fd.write(buffer)
- status = r"%10d MiB [%3d%%]" % (done / 1024 / 1024,
+ status = r'%10d MiB [%3d%%]' % (done / 1024 / 1024,
done * 100 / size)
status = status + chr(8) * (len(status) + 1)
print status,
diff --git a/tools/fdtgrep.c b/tools/fdtgrep.c
index 67aa41a24d..8d3fef4027 100644
--- a/tools/fdtgrep.c
+++ b/tools/fdtgrep.c
@@ -660,6 +660,8 @@ static int fdtgrep_find_regions(const void *fdt,
if (!ret)
count++;
}
+ if (ret && ret != -FDT_ERR_NOTFOUND)
+ return ret;
/* Find all the aliases and add those regions back in */
if (disp->add_aliases && count < max_regions) {
@@ -667,7 +669,11 @@ static int fdtgrep_find_regions(const void *fdt,
new_count = fdt_add_alias_regions(fdt, region, count,
max_regions, &state);
- if (new_count <= max_regions) {
+ if (new_count == -FDT_ERR_NOTFOUND) {
+ /* No alias node found */
+ } else if (new_count < 0) {
+ return new_count;
+ } else if (new_count <= max_regions) {
/*
* The alias regions will now be at the end of the list.
* Sort the regions by offset to get things into the
@@ -679,9 +685,6 @@ static int fdtgrep_find_regions(const void *fdt,
}
}
- if (ret != -FDT_ERR_NOTFOUND)
- return ret;
-
return count;
}
@@ -807,6 +810,9 @@ static int do_fdtgrep(struct display_info *disp, const char *filename)
disp->flags);
if (count < 0) {
report_error("fdt_find_regions", count);
+ if (count == -FDT_ERR_BADLAYOUT)
+ fprintf(stderr,
+ "/aliases node must come before all other nodes\n");
return -1;
}
if (count <= max_regions)
diff --git a/tools/patman/patchstream.py b/tools/patman/patchstream.py
index 6d3c41f49e..27d031ef59 100644
--- a/tools/patman/patchstream.py
+++ b/tools/patman/patchstream.py
@@ -376,7 +376,7 @@ def GetMetaDataForList(commit_range, git_dir=None, count=None,
if not series:
series = Series()
series.allow_overwrite = allow_overwrite
- params = gitutil.LogCmd(commit_range,reverse=True, count=count,
+ params = gitutil.LogCmd(commit_range, reverse=True, count=count,
git_dir=git_dir)
stdout = command.RunPipe([params], capture=True).stdout
ps = PatchStream(series, is_log=True)
diff --git a/tools/patman/patman.py b/tools/patman/patman.py
index d05c5ff8e1..fe50eb4d5c 100755
--- a/tools/patman/patman.py
+++ b/tools/patman/patman.py
@@ -117,7 +117,8 @@ elif options.full_help:
pager = os.getenv('PAGER')
if not pager:
pager = 'more'
- fname = os.path.join(os.path.dirname(sys.argv[0]), 'README')
+ fname = os.path.join(os.path.dirname(os.path.realpath(sys.argv[0])),
+ 'README')
command.Run(pager, fname)
# Process commits, produce patches files, check them, email them