You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
67 lines
2.0 KiB
67 lines
2.0 KiB
#!/usr/bin/env python |
|
''' |
|
check firmware-version.txt in binaries directory |
|
''' |
|
|
|
import os |
|
|
|
VEHICLES = ['AntennaTracker', 'Copter', 'Plane', 'Rover', 'Sub'] |
|
|
|
def parse_git_version(gfile): |
|
'''parse git-version.txt, producing a firmware-version.txt''' |
|
gv = open(gfile).readlines() |
|
vline = gv[-1] |
|
if not vline.startswith("APMVERSION:"): |
|
print("Bad version %s in %s" % (vline, gfile)) |
|
return None |
|
vline = vline[11:] |
|
a = vline.split('V') |
|
if len(a) != 2: |
|
return None |
|
vers = a[1].strip() |
|
if vers[-1].isdigit(): |
|
return vers+"-FIRMWARE_VERSION_TYPE_OFFICIAL" |
|
print("Bad vers %s in %s" % (vers, gfile)) |
|
return None |
|
|
|
def check_fw_version(version): |
|
try: |
|
(version_numbers, release_type) = version.split("-") |
|
(_, _, _) = version_numbers.split(".") |
|
except Exception: |
|
return False |
|
return True |
|
|
|
def check_version(vehicle): |
|
'''check firmware-version.txt version for a vehicle''' |
|
for d in os.listdir(vehicle): |
|
if not d.startswith("stable"): |
|
continue |
|
stable_dir = '%s/%s' % (vehicle, d) |
|
for b in sorted(os.listdir(stable_dir)): |
|
if not os.path.isdir(os.path.join(stable_dir, b)): |
|
continue |
|
vfile = os.path.join(stable_dir, b, "firmware-version.txt") |
|
if os.path.exists(vfile): |
|
v = open(vfile).read() |
|
if check_fw_version(v): |
|
continue |
|
gfile = os.path.join(stable_dir, b, "git-version.txt") |
|
if not os.path.exists(gfile): |
|
print("Missing %s" % gfile) |
|
continue |
|
v = parse_git_version(gfile) |
|
if v is not None: |
|
open(vfile, "w").write(v) |
|
print("Added %s" % vfile) |
|
continue |
|
print("Failed for %s" % gfile) |
|
|
|
if __name__ == "__main__": |
|
import argparse |
|
parser = argparse.ArgumentParser(description='check_firmware_version.py') |
|
|
|
args = parser.parse_args() |
|
|
|
for v in VEHICLES: |
|
check_version(v)
|
|
|