From 9b83bfdcb0baac4c2f986c600a2a7c2e946ad17c Mon Sep 17 00:00:00 2001 From: Simon Glass Date: Mon, 1 Dec 2014 17:34:05 -0700 Subject: buildman: Allow architecture to alias to multiple toolchains Some archs have need than one alias, so support a list of alises in the ..buildman file. Signed-off-by: Simon Glass diff --git a/tools/buildman/README b/tools/buildman/README index 865390a..849e6ca 100644 --- a/tools/buildman/README +++ b/tools/buildman/README @@ -701,8 +701,9 @@ a set of (tag, value) pairs. This converts toolchain architecture names to U-Boot names. For example, if an x86 toolchains is called i386-linux-gcc it will not normally be - used for architecture 'x86'. Adding 'x86: i386' to this section will - tell buildman that the i386 toolchain can be used for x86. + used for architecture 'x86'. Adding 'x86: i386 x86_64' to this section + will tell buildman that the i386 and x86_64 toolchains can be used for + the x86 architecture. '[make-flags]' section diff --git a/tools/buildman/test.py b/tools/buildman/test.py index d19f6ea..25be43f 100644 --- a/tools/buildman/test.py +++ b/tools/buildman/test.py @@ -394,5 +394,20 @@ class TestBuild(unittest.TestCase): build.commit_count = 0 self.CheckDirs(build, '') + def testToolchainAliases(self): + self.assertTrue(self.toolchains.Select('arm') != None) + with self.assertRaises(ValueError): + self.toolchains.Select('no-arch') + with self.assertRaises(ValueError): + self.toolchains.Select('x86') + + self.toolchains = toolchain.Toolchains() + self.toolchains.Add('x86_64-linux-gcc', test=False) + self.assertTrue(self.toolchains.Select('x86') != None) + + self.toolchains = toolchain.Toolchains() + self.toolchains.Add('i386-linux-gcc', test=False) + self.assertTrue(self.toolchains.Select('x86') != None) + if __name__ == "__main__": unittest.main() diff --git a/tools/buildman/toolchain.py b/tools/buildman/toolchain.py index cb693f4..ad4df8c 100644 --- a/tools/buildman/toolchain.py +++ b/tools/buildman/toolchain.py @@ -185,9 +185,11 @@ class Toolchains: returns: toolchain object, or None if none found """ - for name, value in bsettings.GetItems('toolchain-alias'): - if arch == name: - arch = value + for tag, value in bsettings.GetItems('toolchain-alias'): + if arch == tag: + for alias in value.split(): + if alias in self.toolchains: + return self.toolchains[alias] if not arch in self.toolchains: raise ValueError, ("No tool chain found for arch '%s'" % arch) -- cgit v0.10.2