Merge change 9605 into donut

* changes:
  use the max image sizes from the target files zip
diff --git a/tools/releasetools/common.py b/tools/releasetools/common.py
index a07ff7c..42a7742 100644
--- a/tools/releasetools/common.py
+++ b/tools/releasetools/common.py
@@ -46,18 +46,18 @@
   return subprocess.Popen(args, **kwargs)
 
 
-def LoadBoardConfig(fn):
-  """Parse a board_config.mk file looking for lines that specify the
-  maximum size of various images, and parse them into the
-  OPTIONS.max_image_size dict."""
+def LoadMaxSizes():
+  """Load the maximum allowable images sizes from the input
+  target_files size."""
   OPTIONS.max_image_size = {}
-  for line in open(fn):
-    line = line.strip()
-    m = re.match(r"BOARD_(BOOT|RECOVERY|SYSTEM|USERDATA)IMAGE_MAX_SIZE"
-                 r"\s*:=\s*(\d+)", line)
-    if not m: continue
-
-    OPTIONS.max_image_size[m.group(1).lower() + ".img"] = int(m.group(2))
+  try:
+    for line in open(os.path.join(OPTIONS.input_tmp, "META", "imagesizes.txt")):
+      image, size = line.split()
+      size = int(size)
+      OPTIONS.max_image_size[image + ".img"] = size
+  except IOError, e:
+    if e.errno == errno.ENOENT:
+      pass
 
 
 def BuildAndAddBootableImage(sourcedir, targetname, output_zip):
diff --git a/tools/releasetools/img_from_target_files b/tools/releasetools/img_from_target_files
index 1d154b9..00abde4 100755
--- a/tools/releasetools/img_from_target_files
+++ b/tools/releasetools/img_from_target_files
@@ -21,8 +21,7 @@
 Usage:  img_from_target_files [flags] input_target_files output_image_zip
 
   -b  (--board_config)  <file>
-      Specifies a BoardConfig.mk file containing image max sizes
-      against which the generated image files are checked.
+      Deprecated.
 
 """
 
@@ -109,10 +108,10 @@
 
   def option_handler(o, a):
     if o in ("-b", "--board_config"):
-      common.LoadBoardConfig(a)
-      return True
+      pass       # deprecated
     else:
       return False
+    return True
 
   args = common.ParseOptions(argv, __doc__,
                              extra_opts="b:",
@@ -123,15 +122,15 @@
     common.Usage(__doc__)
     sys.exit(1)
 
+  OPTIONS.input_tmp = common.UnzipTemp(args[0])
+
+  common.LoadMaxSizes()
   if not OPTIONS.max_image_size:
     print
-    print "  WARNING:  No board config specified; will not check image"
-    print "  sizes against limits.  Use -b to make sure the generated"
-    print "  images don't exceed partition sizes."
+    print "  WARNING:  Failed to load max image sizes; will not enforce"
+    print "  image size limits."
     print
 
-  OPTIONS.input_tmp = common.UnzipTemp(args[0])
-
   output_zip = zipfile.ZipFile(args[1], "w", compression=zipfile.ZIP_DEFLATED)
 
   common.AddBoot(output_zip)
diff --git a/tools/releasetools/ota_from_target_files b/tools/releasetools/ota_from_target_files
index 4cda44a..4864542 100755
--- a/tools/releasetools/ota_from_target_files
+++ b/tools/releasetools/ota_from_target_files
@@ -22,8 +22,7 @@
 Usage:  ota_from_target_files [flags] input_target_files output_ota_package
 
   -b  (--board_config)  <file>
-      Specifies a BoardConfig.mk file containing image max sizes
-      against which the generated image files are checked.
+      Deprecated.
 
   -k  (--package_key)  <key>
       Key to use to sign the package (default is
@@ -736,7 +735,7 @@
 
   def option_handler(o, a):
     if o in ("-b", "--board_config"):
-      common.LoadBoardConfig(a)
+      pass   # deprecated
     elif o in ("-k", "--package_key"):
       OPTIONS.package_key = a
     elif o in ("-i", "--incremental_from"):
@@ -768,13 +767,6 @@
     common.Usage(__doc__)
     sys.exit(1)
 
-  if not OPTIONS.max_image_size:
-    print
-    print "  WARNING:  No board config specified; will not check image"
-    print "  sizes against limits.  Use -b to make sure the generated"
-    print "  images don't exceed partition sizes."
-    print
-
   if OPTIONS.script_mode not in ("amend", "edify", "auto"):
     raise ValueError('unknown script mode "%s"' % (OPTIONS.script_mode,))
 
@@ -783,6 +775,14 @@
 
   print "unzipping target target-files..."
   OPTIONS.input_tmp = common.UnzipTemp(args[0])
+
+  common.LoadMaxSizes()
+  if not OPTIONS.max_image_size:
+    print
+    print "  WARNING:  Failed to load max image sizes; will not enforce"
+    print "  image size limits."
+    print
+
   OPTIONS.target_tmp = OPTIONS.input_tmp
   input_zip = zipfile.ZipFile(args[0], "r")
   if OPTIONS.package_key: