Index: scripts/newbitmaps/make_bmp_from_components.py |
diff --git a/scripts/newbitmaps/make_bmp_from_components.py b/scripts/newbitmaps/make_bmp_from_components.py |
new file mode 100755 |
index 0000000000000000000000000000000000000000..ad4c3d4ef69d85037bcf522112c36745711320e5 |
--- /dev/null |
+++ b/scripts/newbitmaps/make_bmp_from_components.py |
@@ -0,0 +1,86 @@ |
+#!/usr/bin/python2.6 |
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved. |
+# Use of this source code is governed by a BSD-style license that can be |
+# found in the LICENSE file. |
+ |
+# Call on a directory with components_XXX_XXX files, to create |
+# bitmaps with the appropriate names and contents. |
+ |
+import sys |
+import glob |
+import os |
+import re |
+import tempfile |
+ |
+ |
+if len(sys.argv) < 2: |
+ print "usage: %s autotest/../hardware_Components/" % sys.argv[0] |
+ sys.exit(1) |
+ |
+ |
+def MakeBmp(hwid, geom, bmp, directory): |
+ """ Create the bitmap for this file. """ |
+ tmpdir = tempfile.mkdtemp() |
+ tmpfile = os.path.join(tmpdir, "hwid.txt") |
+ tmpbmpname = os.path.join(tmpdir, "hwid.bmp") |
+ f = open(tmpfile, "w") |
+ f.write(hwid) |
+ f.close() |
+ |
+ # Call bitmap making tools. |
+ txt_to_bmp = ("~/trunk/src/platform/vboot_reference/" |
+ "scripts/newbitmaps/strings/text_to_bmp") |
+ imagedir = os.path.join( |
+ "~/trunk/src/platform/vboot_reference/scripts/newbitmaps/images", geom) |
+ yamlfile = os.path.join(imagedir, "unknown.yaml") |
+ newyamlfile = os.path.join(imagedir, "hwid.yaml") |
+ outputbmp = os.path.join(directory, bmp) |
+ |
+ os.system("%s %s > /dev/null" % (txt_to_bmp, tmpfile)) |
+ os.system("cat %s | sed 's#hwid_unknown.bmp#%s#' > %s" % ( |
+ yamlfile, tmpbmpname, newyamlfile)) |
+ os.system("pushd %s >/dev/null; bmpblk_utility -c %s %s; popd >/dev/null" % ( |
+ imagedir, newyamlfile, outputbmp)) |
+ os.system("rm -rf %s" % tmpdir) |
+ |
+def ProcessDir(directory): |
+ """ Find all the components file in this dir. """ |
+ # Regex to find the values we want. |
+ re_bmp = re.compile(r'\'data_bitmap_fv\': \[\'(?P<bmp>.*)\'\],') |
+ re_hwid = re.compile(r'\'part_id_hwqual\': \[\'(?P<hwid>.*)\'\],') |
+ re_geom = re.compile(r'\'data_display_geometry\': \[\'(?P<geom>.*)\'\],') |
+ |
+ # Find the components files. |
+ files = glob.glob(os.path.join(directory, "data_*/components_*")) |
+ for file in files: |
+ # Scan for the values. |
+ f = open(file, "r") |
+ bmp = None |
+ hwid = None |
+ geom = None |
+ for line in f.readlines(): |
+ m = re_bmp.search(line) |
+ if m: |
+ bmp = m.group('bmp') |
+ |
+ m = re_hwid.search(line) |
+ if m: |
+ hwid = m.group('hwid') |
+ |
+ m = re_geom.search(line) |
+ if m: |
+ geom = m.group('geom') |
+ f.close() |
+ if not ( bmp and hwid and geom): |
+ print "Corrupt HWID configuration" |
+ sys.exit(1) |
+ print "HWID: %s, %s, %s" % (hwid, geom, bmp) |
+ MakeBmp(hwid, geom, bmp, directory) |
+ |
+def main(): |
+ directory = os.path.abspath(sys.argv[1]) |
+ print "Generating HWID bmp based on %s" % directory |
+ ProcessDir(directory) |
+ |
+if __name__ == '__main__': |
+ main() |