Path: blob/master/Tools/scripts/check_firmware_version.py
9386 views
#!/usr/bin/env python312# flake8: noqa34'''5check firmware-version.txt in binaries directory6'''78import os910VEHICLES = ['AntennaTracker', 'Copter', 'Plane', 'Rover', 'Sub']1112def parse_git_version(gfile):13'''parse git-version.txt, producing a firmware-version.txt'''14gv = open(gfile).readlines()15vline = gv[-1]16if not vline.startswith("APMVERSION:"):17print("Bad version %s in %s" % (vline, gfile))18return None19vline = vline[11:]20a = vline.split('V')21if len(a) != 2:22return None23vers = a[1].strip()24if vers[-1].isdigit():25return vers+"-FIRMWARE_VERSION_TYPE_OFFICIAL"26print("Bad vers %s in %s" % (vers, gfile))27return None2829def check_fw_version(version):30try:31(version_numbers, release_type) = version.split("-")32(_, _, _) = version_numbers.split(".")33except Exception:34return False35return True3637def check_version(vehicle):38'''check firmware-version.txt version for a vehicle'''39for d in os.listdir(vehicle):40if not d.startswith("stable"):41continue42stable_dir = '%s/%s' % (vehicle, d)43for b in sorted(os.listdir(stable_dir)):44if not os.path.isdir(os.path.join(stable_dir, b)):45continue46vfile = os.path.join(stable_dir, b, "firmware-version.txt")47if os.path.exists(vfile):48v = open(vfile).read()49if check_fw_version(v):50continue51gfile = os.path.join(stable_dir, b, "git-version.txt")52if not os.path.exists(gfile):53print("Missing %s" % gfile)54continue55v = parse_git_version(gfile)56if v is not None:57open(vfile, "w").write(v)58print("Added %s" % vfile)59continue60print("Failed for %s" % gfile)6162if __name__ == "__main__":63import argparse64parser = argparse.ArgumentParser(description='check_firmware_version.py')6566args = parser.parse_args()6768for v in VEHICLES:69check_version(v)707172