Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Ardupilot
GitHub Repository: Ardupilot/ardupilot
Path: blob/master/Tools/scripts/gen_stable.py
9367 views
1
#!/usr/bin/env python3
2
3
# flake8: noqa
4
5
'''
6
create stable-x.y.z directories so we keep all past stable releases for users to download
7
'''
8
9
import os
10
import shutil
11
12
VEHICLES = ['AntennaTracker', 'Copter', 'Plane', 'Rover', 'Sub']
13
14
# beta directories that may contain stable builds
15
BETA_DIRS = []
16
17
def make_stable(basedir, vehicle):
18
'''make stable version for a vehicle'''
19
stable_dir = os.path.join(basedir, vehicle, 'stable')
20
if not os.path.exists(stable_dir):
21
print("Missing %s" % stable_dir)
22
return
23
for b in sorted(os.listdir(stable_dir)):
24
if not os.path.isdir(os.path.join(stable_dir, b)):
25
continue
26
vfile = os.path.join(stable_dir, b, "firmware-version.txt")
27
if not os.path.exists(vfile):
28
print("Missing %s" % vfile)
29
continue
30
vstr = open(vfile).read()
31
version = vstr.split('-')[0]
32
new_dir_parent = os.path.join(basedir, vehicle, 'stable-%s' % version)
33
new_dir = os.path.join(new_dir_parent, b)
34
if os.path.exists(new_dir):
35
continue
36
if not os.path.exists(new_dir_parent):
37
os.mkdir(new_dir_parent)
38
print('Creating %s' % new_dir)
39
old_dir = os.path.join(stable_dir, b)
40
shutil.copytree(old_dir, new_dir)
41
42
def make_stable_from_beta(basedir, vehicle, beta_dir):
43
'''make stable version from a beta with OFFICIAL tag'''
44
beta_dir = os.path.join(basedir, vehicle, beta_dir)
45
if not os.path.exists(beta_dir):
46
return
47
for b in sorted(os.listdir(beta_dir)):
48
if not os.path.isdir(os.path.join(beta_dir, b)):
49
continue
50
vfile = os.path.join(beta_dir, b, "firmware-version.txt")
51
if not os.path.exists(vfile):
52
print("Missing %s" % vfile)
53
continue
54
vstr = open(vfile).read().strip()
55
a = vstr.split('-')
56
if len(a) != 2:
57
continue
58
version = a[0]
59
vtype = a[1]
60
#print(vfile, b, version, vtype)
61
if vtype != 'FIRMWARE_VERSION_TYPE_OFFICIAL':
62
# not a new stable
63
continue
64
new_dir_parent = os.path.join(basedir, vehicle, 'stable-%s' % version)
65
new_dir = os.path.join(new_dir_parent, b)
66
if os.path.exists(new_dir):
67
continue
68
if not os.path.exists(new_dir_parent):
69
os.mkdir(new_dir_parent)
70
print('Creating %s' % new_dir)
71
old_dir = os.path.join(beta_dir, b)
72
shutil.copytree(old_dir, new_dir)
73
74
75
def make_all_stable(basedir):
76
'''make stable directory for all vehicles'''
77
for v in VEHICLES:
78
make_stable(basedir, v)
79
for b in BETA_DIRS:
80
make_stable_from_beta(basedir, v, b)
81
82
83
if __name__ == "__main__":
84
import argparse
85
parser = argparse.ArgumentParser(description='gen_stable.py')
86
parser.add_argument('basedir', type=str, default="-", help='base binaries directory')
87
args = parser.parse_args()
88
89
make_all_stable(args.basedir)
90
91