mirror of
https://github.com/ArduPilot/ardupilot
synced 2025-02-23 00:04:02 -04:00
Tools: build-with-disabled-features: check on stm32 board
This commit is contained in:
parent
0e153313eb
commit
8ae9b8cc95
@ -28,19 +28,31 @@ pbarker@bluebottle:~/rc/ardupilot(build-with-disabled-features)$ q
|
|||||||
import re
|
import re
|
||||||
import shutil
|
import shutil
|
||||||
import subprocess
|
import subprocess
|
||||||
|
import sys
|
||||||
|
|
||||||
from pysim import util
|
from pysim import util
|
||||||
|
|
||||||
|
|
||||||
class Builder():
|
class Builder():
|
||||||
|
|
||||||
def __init__(self, spec):
|
def __init__(self, spec, autotest=False, board=None):
|
||||||
self.config = spec["config"]
|
self.config = spec["config"]
|
||||||
self.autotest_build = spec["builddir"]
|
self.autotest_build = spec["autotest_target"]
|
||||||
|
self.target_binary = spec["target_binary"]
|
||||||
|
|
||||||
# list other features that have to be disabled when a feature
|
# list other features that have to be disabled when a feature
|
||||||
# is disabled (recursion not done; be exhaustive):
|
# is disabled (recursion not done; be exhaustive):
|
||||||
self.reverse_deps = spec["reverse-deps"]
|
self.reverse_deps = spec["reverse-deps"]
|
||||||
|
self.autotest = autotest
|
||||||
|
self.board = board
|
||||||
|
|
||||||
|
def description(self):
|
||||||
|
if self.autotest:
|
||||||
|
return self.autotest_build
|
||||||
|
if self.target_binary:
|
||||||
|
return "%s:%s" % (self.board, self.target_binary)
|
||||||
|
print("Bad config")
|
||||||
|
sys.exit(1)
|
||||||
|
|
||||||
def reverse_deps_for_var(self, var):
|
def reverse_deps_for_var(self, var):
|
||||||
return self.reverse_deps.get(var, [])
|
return self.reverse_deps.get(var, [])
|
||||||
@ -112,6 +124,26 @@ class Builder():
|
|||||||
|
|
||||||
def build_works(self):
|
def build_works(self):
|
||||||
self.progress("Building")
|
self.progress("Building")
|
||||||
|
|
||||||
|
if self.autotest:
|
||||||
|
return self.build_works_autotest()
|
||||||
|
|
||||||
|
try:
|
||||||
|
ret = util.run_cmd(["./waf", "configure", "--board", self.board])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return False
|
||||||
|
if ret != 0:
|
||||||
|
return False
|
||||||
|
try:
|
||||||
|
ret = util.run_cmd(["./waf", "build", "--target", self.target_binary])
|
||||||
|
except subprocess.CalledProcessError:
|
||||||
|
return False
|
||||||
|
if ret != 0:
|
||||||
|
return False
|
||||||
|
|
||||||
|
return True
|
||||||
|
|
||||||
|
def build_works_autotest(self):
|
||||||
autotest = util.reltopdir("Tools/autotest/autotest.py")
|
autotest = util.reltopdir("Tools/autotest/autotest.py")
|
||||||
try:
|
try:
|
||||||
ret = util.run_cmd([autotest, self.autotest_build])
|
ret = util.run_cmd([autotest, self.autotest_build])
|
||||||
@ -160,7 +192,8 @@ class BuilderCopter(Builder):
|
|||||||
specs = [
|
specs = [
|
||||||
{
|
{
|
||||||
"config": 'ArduCopter/config.h',
|
"config": 'ArduCopter/config.h',
|
||||||
"builddir": "build.ArduCopter",
|
"autotest_target": "build.ArduCopter",
|
||||||
|
"target_binary": "bin/arducopter",
|
||||||
"reverse-deps": {
|
"reverse-deps": {
|
||||||
"AC_FENCE": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED"],
|
"AC_FENCE": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED"],
|
||||||
"PROXIMITY_ENABLED": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED" ],
|
"PROXIMITY_ENABLED": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED" ],
|
||||||
@ -172,19 +205,39 @@ specs = [
|
|||||||
"MODE_GUIDED_ENABLED": ["MODE_AUTO_ENABLED", "AC_TERRAIN", "ADSB_ENABLED", "MODE_FOLLOW_ENABLED", "MODE_GUIDED_NOGPS_ENABLED"],
|
"MODE_GUIDED_ENABLED": ["MODE_AUTO_ENABLED", "AC_TERRAIN", "ADSB_ENABLED", "MODE_FOLLOW_ENABLED", "MODE_GUIDED_NOGPS_ENABLED"],
|
||||||
"AC_AVOID_ENABLED": ["MODE_FOLLOW_ENABLED"],
|
"AC_AVOID_ENABLED": ["MODE_FOLLOW_ENABLED"],
|
||||||
},
|
},
|
||||||
}, {
|
},
|
||||||
|
{
|
||||||
|
"config": 'ArduCopter/config.h',
|
||||||
|
"autotest_target": "build.Helicopter",
|
||||||
|
"target_binary": "bin/arducopter-heli",
|
||||||
|
"reverse-deps": {
|
||||||
|
"AC_FENCE": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED"],
|
||||||
|
"PROXIMITY_ENABLED": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED" ],
|
||||||
|
"AC_RALLY": ["AC_TERRAIN"],
|
||||||
|
"MODE_AUTO_ENABLED": ["AC_TERRAIN", "MODE_GUIDED"],
|
||||||
|
"MODE_RTL_ENABLED": ["MODE_AUTO_ENABLED", "AC_TERRAIN"],
|
||||||
|
"BEACON_ENABLED": ["AC_AVOID_ENABLED", "MODE_FOLLOW_ENABLED"],
|
||||||
|
"MODE_CIRCLE_ENABLED": ["MODE_AUTO_ENABLED", "AC_TERRAIN"],
|
||||||
|
"MODE_GUIDED_ENABLED": ["MODE_AUTO_ENABLED", "AC_TERRAIN"],
|
||||||
|
"AC_AVOID_ENABLED": ["MODE_FOLLOW_ENABLED"],
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
"config": 'ArduPlane/config.h',
|
"config": 'ArduPlane/config.h',
|
||||||
"builddir": "build.ArduPlane",
|
"autotest_target": "build.ArduPlane",
|
||||||
|
"target_binary": "bin/arduplane",
|
||||||
"reverse-deps": {
|
"reverse-deps": {
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
"config": 'APMrover2/config.h',
|
"config": 'APMrover2/config.h',
|
||||||
"builddir": "build.APMrover2",
|
"autotest_target": "build.APMrover2",
|
||||||
|
"target_binary": "bin/ardurover",
|
||||||
"reverse-deps": {
|
"reverse-deps": {
|
||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
"config": 'ArduSub/config.h',
|
"config": 'ArduSub/config.h',
|
||||||
"builddir": "build.ArduSub",
|
"autotest_target": "build.ArduSub",
|
||||||
|
"target_binary": "bin/ardusub",
|
||||||
"reverse-deps": {
|
"reverse-deps": {
|
||||||
"AC_FENCE": ["AVOIDANCE_ENABLED"],
|
"AC_FENCE": ["AVOIDANCE_ENABLED"],
|
||||||
"PROXIMITY_ENABLED": ["AVOIDANCE_ENABLED"],
|
"PROXIMITY_ENABLED": ["AVOIDANCE_ENABLED"],
|
||||||
@ -192,20 +245,31 @@ specs = [
|
|||||||
},
|
},
|
||||||
}, {
|
}, {
|
||||||
"config": 'AntennaTracker/config.h',
|
"config": 'AntennaTracker/config.h',
|
||||||
"builddir": "build.AntennaTracker",
|
"autotest_target": "build.AntennaTracker",
|
||||||
|
"target_binary": "bin/antennatracker",
|
||||||
"reverse-deps": {
|
"reverse-deps": {
|
||||||
},
|
},
|
||||||
},
|
},]
|
||||||
]
|
|
||||||
|
|
||||||
builders = []
|
builders = []
|
||||||
|
|
||||||
|
# append autotest builders:
|
||||||
for spec in specs:
|
for spec in specs:
|
||||||
builder = Builder(spec)
|
builder = Builder(spec, autotest=True)
|
||||||
builder.run()
|
builder.run()
|
||||||
builders.append(builder)
|
builders.append(builder)
|
||||||
|
|
||||||
|
# append directly-build-by-waf targets
|
||||||
|
for spec in specs:
|
||||||
|
for board in ["CubeOrange"]:
|
||||||
|
builder = Builder(spec, board=board)
|
||||||
|
builder.run()
|
||||||
|
builders.append(builder)
|
||||||
|
|
||||||
|
|
||||||
print("")
|
print("")
|
||||||
for builder in builders:
|
for builder in builders:
|
||||||
print("Builder: %s" % builder.autotest_build)
|
print("Builder: %s" % builder.description())
|
||||||
print(" Successes: %s" % builder.successes)
|
print(" Successes: %s" % builder.successes)
|
||||||
print(" Failures: %s" % builder.failures)
|
print(" Failures: %s" % builder.failures)
|
||||||
|
Loading…
Reference in New Issue
Block a user