Some misc fixes to get the workflow working properly.

PRESUBMIT=passed
R=asharif,bjanakiraman
DELTA=25  (18 added, 2 deleted, 5 changed)
OCL=45195-p2
RCL=45197-p2
RDATE=2010/11/12 10:51:59


P4 change: 42605790
diff --git a/v14/setup_chromeos.py b/v14/setup_chromeos.py
index 73d1a7c..4f8f3ac 100755
--- a/v14/setup_chromeos.py
+++ b/v14/setup_chromeos.py
@@ -37,7 +37,7 @@
 GIT_TAGS_CMD = ("git ls-remote --tags "
                 "ssh://git@gitrw.chromium.org:9222/chromiumos-overlay.git | "
                 "grep refs/tags/ | grep '[0-9]*\.[0-9]*\.[0-9]*\.[0-9]*' | "
-                "cut -d '/' -f 3 | sort -nr")
+                "cut -d '/' -f 3")
 
 
 def StoreFile(filename, contents):
@@ -56,26 +56,42 @@
   return res[1].strip().split("\n")
 
 
+def GetLatestTag(tags):
+  latest = tags[0]
+  for tag in tags:
+    current_components = tag.split(".")
+    latest_components = latest.split(".")
+    for i in range(len(current_components)):
+      if int(current_components[i]) > int(latest_components[i]):
+        latest = tag
+        break
+      elif int(current_components[i]) < int(latest_components[i]):
+        break
+
+  return latest
+
+
 def Main():
   """Checkout the ChromeOS source."""
   parser = optparse.OptionParser()
   parser.add_option("--dir", dest="directory",
                     help="Target directory for ChromeOS installation.")
-  parser.add_option("--version", dest="version",
+  parser.add_option("--version", dest="version", default="latest",
                     help="""ChromeOS version. Can be: (1) A release version
 in the format: 'X.X.X.X' (2) 'latest' for the latest release version or (3)
 'top' for top of trunk. Default is 'latest'""")
 
-  tags = GetTags()
-
   options = parser.parse_args()[0]
 
+  tags = GetTags()
+
   if options.version == "latest":
-    version = tags[0]
+    version = GetLatestTag(tags)
     print version
   elif options.version == "top":
     version = "top"
   elif options.version is None:
+    print "No version specified"
     Usage(parser)
   else:
     version = options.version.strip()
diff --git a/v14/utils/utils.py b/v14/utils/utils.py
index 2059e08..7b11aa5 100755
--- a/v14/utils/utils.py
+++ b/v14/utils/utils.py
@@ -60,7 +60,7 @@
       fds = select.select([p.stdout, p.stderr], [], [], 0.1)
       for fd in fds[0]:
         if fd == p.stdout:
-          out = os.read(p.stdout.fileno(), 4096)
+          out = os.read(p.stdout.fileno(), 1)
           if return_output:
             full_stdout += out
           if self.print_console:
@@ -69,7 +69,7 @@
           self.stdout.write(out)
           self.stdout.flush()
         if fd == p.stderr:
-          err = os.read(p.stderr.fileno(), 4096)
+          err = os.read(p.stderr.fileno(), 1)
           if return_output:
             full_stderr += err
           if self.print_console: