]> code.ossystems Code Review - openembedded-core.git/commitdiff
bitbake-dev: Dynamically load the UI module.
authorRob Bradford <rob@linux.intel.com>
Tue, 21 Oct 2008 11:39:23 +0000 (12:39 +0100)
committerRob Bradford <rob@linux.intel.com>
Tue, 21 Oct 2008 11:39:23 +0000 (12:39 +0100)
Dynamically load the UI from a module based on the UI name given. We still
however maintain a fixed set in here with the set of suggested UIs.

bitbake-dev/bin/bitbake

index 1f650e2bdcfb0ae1c889db50984e76872667cc63..d85135a11723e62a28af095c665603fabdfadb61 100755 (executable)
@@ -123,21 +123,6 @@ Default BBFILES are the .bb files in the current directory.""" )
     configuration.pkgs_to_build = []
     configuration.pkgs_to_build.extend(args[1:])
 
-    # Work out which UI(s) to use
-    curseUI = False
-    depexplorerUI = False
-    if configuration.ui:
-        if configuration.ui == "ncurses":
-            curseUI = True
-        elif configuration.ui == "knotty" or configuration.ui == "tty" or configuration.ui == "file":
-            curseUI = False
-        elif configuration.ui == "depexp":
-            depexplorerUI = True
-        else:
-            print "FATAL: Invalid user interface '%s' specified.\nValid interfaces are 'ncurses', 'depexp' or the default, 'knotty'." % configuration.ui
-            sys.exit(1)
-
-
     cooker = bb.cooker.BBCooker(configuration)
 
     # Clear away any spurious environment variables. But don't wipe the
@@ -166,18 +151,22 @@ Default BBFILES are the .bb files in the current directory.""" )
     eventHandler = uievent.BBUIEventQueue(server)
 
     # Launch the UI
+    if configuration.ui:
+        ui = configuration.ui
+    else:
+        ui = "knotty"
+
     try:
-        if curseUI:
-            from bb.ui import ncurses
-            ncurses.init(server, eventHandler)
-        elif depexplorerUI:
-            from bb.ui import depexplorer
-            depexplorer.init(server, eventHandler)
-        else:
-            from bb.ui import knotty
-            return_value = knotty.init(server, eventHandler)
+            # Dynamically load the UI based on the ui name. Although we
+            # suggest a fixed set this allows you to have flexibility in which
+            # ones are available.
+            exec "from bb.ui import " + ui
+            exec ui + ".init(server, eventHandler)"
+    except ImportError:
+        print "FATAL: Invalid user interface '%s' specified. " % ui
+        print "Valid interfaces are 'ncurses', 'depexp' or the default, 'knotty'."
     except Exception, e:
-       print "FATAL: Unable to start to '%s' UI: %s" % (configuration.ui, e.message)
+        print "FATAL: Unable to start to '%s' UI: %s." % (configuration.ui, e.message)
     finally:
         # Don't wait for server indefinitely
         import socket