diff options
Diffstat (limited to 'tools/check_radio_versions.py')
-rwxr-xr-x | tools/check_radio_versions.py | 79 |
1 files changed, 79 insertions, 0 deletions
diff --git a/tools/check_radio_versions.py b/tools/check_radio_versions.py new file mode 100755 index 0000000..ebe621f --- /dev/null +++ b/tools/check_radio_versions.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python +# +# Copyright (C) 2012 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +import sys +import os + +try: + from hashlib import sha1 +except ImportError: + from sha import sha as sha1 + +if len(sys.argv) < 2: + sys.exit(0) + +build_info = {} +f = open(sys.argv[1]) +for line in f: + line = line.strip() + if line.startswith("require"): + key, value = line.split()[1].split("=", 1) + build_info[key] = value +f.close() + +bad = False + +for item in sys.argv[2:]: + key, fn = item.split(":", 1) + + values = build_info.get(key, None) + if not values: + continue + values = values.split("|") + + f = open(fn, "rb") + digest = sha1(f.read()).hexdigest() + f.close() + + versions = {} + try: + f = open(fn + ".sha1") + except IOError: + if not bad: print + print "*** Error opening \"%s.sha1\"; can't verify %s" % (fn, key) + bad = True + continue + for line in f: + line = line.strip() + if not line or line.startswith("#"): continue + h, v = line.split() + versions[h] = v + + if digest not in versions: + if not bad: print + print "*** SHA-1 hash of \"%s\" doesn't appear in \"%s.sha1\"" % (fn, fn) + bad = True + continue + + if versions[digest] not in values: + if not bad: print + print "*** \"%s\" is version %s; not any %s allowed by \"%s\"." % ( + fn, versions[digest], key, sys.argv[1]) + bad = True + +if bad: + print + sys.exit(1) |