blob: d99c0604c24e801511b8dfb84c12c23d59e65a2b [file] [log] [blame]
bjanakiraman7f4a4852013-02-15 04:35:28 +00001#!/usr/bin/python2.6
2#
3# Copyright 2010 Google Inc. All Rights Reserved.
4
5"""Utilities for toolchain build."""
6
7
8__author__ = "asharif@google.com (Ahmad Sharif)"
9
10import os
raymesc8fbd3a2013-02-15 04:46:42 +000011import pickle
raymesc8fbd3a2013-02-15 04:46:42 +000012import StringIO
raymes5154d7f2013-02-15 04:35:37 +000013import sys
raymes01959ae2013-02-15 04:50:07 +000014import logger
asharif4d2b7162013-02-15 05:14:57 +000015import hashlib
bjanakiraman7f4a4852013-02-15 04:35:28 +000016
17
18def GetRoot(scr_name):
19 """Break up pathname into (dir+name)."""
20 abs_path = os.path.abspath(scr_name)
21 return (os.path.dirname(abs_path), os.path.basename(abs_path))
22
23
bjanakiramanaabd2d12013-02-15 04:55:30 +000024# deprecated. Use AssertExit()
raymes01959ae2013-02-15 04:50:07 +000025def AssertTrue(condition, msg=""):
26 if not condition:
27 logger.GetLogger().LogError(msg)
28 sys.exit(1)
raymesc8fbd3a2013-02-15 04:46:42 +000029
30
bjanakiramanaabd2d12013-02-15 04:55:30 +000031def AssertExit(condition, msg=""):
32 if not condition:
33 logger.GetLogger().LogError(msg)
34 sys.exit(1)
35
36
37def AssertError(condition, msg=""):
38 if not condition:
39 logger.GetLogger().LogError(msg)
40
41
42def AssertWarning(condition, msg=""):
43 if not condition:
44 logger.GetLogger().LogWarning(msg)
45
46
raymesc8fbd3a2013-02-15 04:46:42 +000047def Serialize(argument):
48 string = StringIO.StringIO()
49 pickle.dump(argument, string)
50 return string.getvalue()
51
raymes01959ae2013-02-15 04:50:07 +000052
raymesc8fbd3a2013-02-15 04:46:42 +000053def Deserialize(argument):
54 return pickle.load(StringIO.StringIO(argument))
asharifcefd1382013-02-15 04:49:12 +000055
56
57def FormatQuotedCommand(command):
58 return command.replace("\"", "\\\"")
59
asharif4d2b7162013-02-15 05:14:57 +000060def Md5File(filename, block_size=2**10):
61 f = open(filename, "r")
62 AssertExit(f is not None)
63 md5 = hashlib.md5()
64 while True:
65 data = f.read(block_size)
66 if not data:
67 break
68 md5.update(data)
69 f.close()
70 return md5.hexdigest()
bjanakiraman229d6262013-02-15 04:56:46 +000071