diff --git a/tools/buildman/control.py b/tools/buildman/control.py
index 46053d8db3bbe8f4c3527c3c54a14793bf7aa951..b86d7b3c1f901f2598778e0b94e4543d863fe758 100644
--- a/tools/buildman/control.py
+++ b/tools/buildman/control.py
@@ -111,14 +111,9 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
 
     options.git_dir = os.path.join(options.git, '.git')
 
-    if not toolchains:
+    no_toolchains = toolchains is None
+    if no_toolchains:
         toolchains = toolchain.Toolchains()
-        toolchains.GetSettings()
-        toolchains.Scan(options.list_tool_chains)
-    if options.list_tool_chains:
-        toolchains.List()
-        print
-        return 0
 
     if options.fetch_arch:
         if options.fetch_arch == 'list':
@@ -139,6 +134,14 @@ def DoBuildman(options, args, toolchains=None, make_func=None, boards=None,
                     return ret
             return 0
 
+    if no_toolchains:
+        toolchains.GetSettings()
+        toolchains.Scan(options.list_tool_chains)
+    if options.list_tool_chains:
+        toolchains.List()
+        print
+        return 0
+
     # Work out how many commits to build. We want to build everything on the
     # branch. We also build the upstream commit as a control so we can see
     # problems introduced by the first commit on the branch.