github.com/westcoastroms/westcoastroms-build@v0.0.0-20190928114312-2350e5a73030/build/make/tools/check_radio_versions.py (about)

     1  #!/usr/bin/env python
     2  #
     3  # Copyright (C) 2012 The Android Open Source Project
     4  #
     5  # Licensed under the Apache License, Version 2.0 (the "License");
     6  # you may not use this file except in compliance with the License.
     7  # You may obtain a copy of the License at
     8  #
     9  #      http://www.apache.org/licenses/LICENSE-2.0
    10  #
    11  # Unless required by applicable law or agreed to in writing, software
    12  # distributed under the License is distributed on an "AS IS" BASIS,
    13  # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    14  # See the License for the specific language governing permissions and
    15  # limitations under the License.
    16  
    17  import sys
    18  import os
    19  
    20  try:
    21    from hashlib import sha1
    22  except ImportError:
    23    from sha import sha as sha1
    24  
    25  if len(sys.argv) < 2:
    26    sys.exit(0)
    27  
    28  build_info = {}
    29  f = open(sys.argv[1])
    30  for line in f:
    31    line = line.strip()
    32    if line.startswith("require"):
    33      key, value = line.split()[1].split("=", 1)
    34      build_info[key] = value
    35  f.close()
    36  
    37  bad = False
    38  
    39  for item in sys.argv[2:]:
    40    key, fn = item.split(":", 1)
    41  
    42    values = build_info.get(key, None)
    43    if not values:
    44      continue
    45    values = values.split("|")
    46  
    47    f = open(fn, "rb")
    48    digest = sha1(f.read()).hexdigest()
    49    f.close()
    50  
    51    versions = {}
    52    try:
    53      f = open(fn + ".sha1")
    54    except IOError:
    55      if not bad: print
    56      print "*** Error opening \"%s.sha1\"; can't verify %s" % (fn, key)
    57      bad = True
    58      continue
    59    for line in f:
    60      line = line.strip()
    61      if not line or line.startswith("#"): continue
    62      h, v = line.split()
    63      versions[h] = v
    64  
    65    if digest not in versions:
    66      if not bad: print
    67      print "*** SHA-1 hash of \"%s\" doesn't appear in \"%s.sha1\"" % (fn, fn)
    68      bad = True
    69      continue
    70  
    71    if versions[digest] not in values:
    72      if not bad: print
    73      print "*** \"%s\" is version %s; not any %s allowed by \"%s\"." % (
    74          fn, versions[digest], key, sys.argv[1])
    75      bad = True
    76  
    77  if bad:
    78    print
    79    sys.exit(1)