Tools: added a script to generate missing firmware-version.txt files
This commit is contained in:
parent
709a4d00d9
commit
4881d32b18
67
Tools/scripts/check_firmware_version.py
Executable file
67
Tools/scripts/check_firmware_version.py
Executable file
@ -0,0 +1,67 @@
|
||||
#!/usr/bin/env python
|
||||
'''
|
||||
check firmware-version.txt in binaries directory
|
||||
'''
|
||||
|
||||
import os, shutil, subprocess
|
||||
|
||||
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("-")
|
||||
(major, minor, patch) = 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)
|
Loading…
Reference in New Issue
Block a user