OLD | NEW |
---|---|
(Empty) | |
1 #!/usr/bin/python2.6 | |
2 # Copyright (c) 2011 The Chromium OS Authors. All rights reserved. | |
3 # Use of this source code is governed by a BSD-style license that can be | |
4 # found in the LICENSE file. | |
5 | |
6 # Call on a directory with components_XXX_XXX files, to create | |
7 # bitmaps with the appropriate names and contents. | |
8 | |
9 import sys | |
10 import glob | |
11 import os | |
12 import re | |
13 import tempfile | |
14 | |
15 | |
16 if len(sys.argv) < 2: | |
17 print "usage: %s autotest/../hardware_Components/" % sys.argv[0] | |
18 sys.exit(1) | |
19 | |
20 | |
21 def MakeBmp(hwid, geom, bmp, directory): | |
22 """ Create the bitmap for this file. """ | |
23 tmpdir = tempfile.mkdtemp() | |
24 tmpfile = os.path.join(tmpdir, "hwid.txt") | |
25 tmpbmpname = os.path.join(tmpdir, "hwid.bmp") | |
26 f = open(tmpfile, "w") | |
27 f.write(hwid) | |
28 f.close() | |
29 | |
30 # Call bitmap making tools. | |
31 txt_to_bmp = ("~/trunk/src/platform/vboot_reference/" | |
32 "scripts/newbitmaps/strings/text_to_bmp") | |
33 imagedir = os.path.join( | |
34 "~/trunk/src/platform/vboot_reference/scripts/newbitmaps/images", geom) | |
35 yamlfile = os.path.join(imagedir, "unknown.yaml") | |
36 newyamlfile = os.path.join(imagedir, "hwid.yaml") | |
37 outputbmp = os.path.join(directory, bmp) | |
38 | |
39 os.system("%s %s > /dev/null" % (txt_to_bmp, tmpfile)) | |
40 os.system("cat %s | sed 's/hwid_unknown.bmp/hwid.bmp/' > %s" % ( | |
Bill Richardson
2011/03/02 18:49:38
Line 40 & 41 needs to be:
os.system("cat %s | sed
| |
41 yamlfile, newyamlfile)) | |
42 os.system("pushd %s >/dev/null; bmpblk_utility -c %s %s; popd >/dev/null" % ( | |
43 imagedir, newyamlfile, outputbmp)) | |
44 os.system("rm -rf %s" % tmpdir) | |
45 | |
46 def ProcessDir(directory): | |
47 """ Find all the components file in this dir. """ | |
48 # Regex to find the values we want. | |
49 re_bmp = re.compile(r'\'data_bitmap_fv\': \[\'(?P<bmp>.*)\'\],') | |
50 re_hwid = re.compile(r'\'part_id_hwqual\': \[\'(?P<hwid>.*)\'\],') | |
51 re_geom = re.compile(r'\'data_display_geometry\': \[\'(?P<geom>.*)\'\],') | |
52 | |
53 # Find the components files. | |
54 files = glob.glob(os.path.join(directory, "data_*/components_*")) | |
55 for file in files: | |
56 # Scan for the values. | |
57 f = open(file, "r") | |
58 bmp = None | |
59 hwid = None | |
60 geom = None | |
61 for line in f.readlines(): | |
62 m = re_bmp.search(line) | |
63 if m: | |
64 bmp = m.group('bmp') | |
65 | |
66 m = re_hwid.search(line) | |
67 if m: | |
68 hwid = m.group('hwid') | |
69 | |
70 m = re_geom.search(line) | |
71 if m: | |
72 geom = m.group('geom') | |
73 f.close() | |
74 if not ( bmp and hwid and geom): | |
75 print "Corrupt HWID configuration" | |
76 sys.exit(1) | |
77 print "HWID: %s, %s, %s" % (hwid, geom, bmp) | |
78 MakeBmp(hwid, geom, bmp, directory) | |
79 | |
80 def main(): | |
81 directory = os.path.abspath(sys.argv[1]) | |
82 print "Generating HWID bmp based on %s" % directory | |
83 ProcessDir(directory) | |
84 | |
85 if __name__ == '__main__': | |
86 main() | |
OLD | NEW |