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.
166 lines
4.6 KiB
166 lines
4.6 KiB
#!/usr/bin/env python |
|
|
|
import os |
|
import re |
|
|
|
''' |
|
list of boards for build_binaries.py and custom build server |
|
|
|
AP_FLAKE8_CLEAN |
|
''' |
|
|
|
|
|
class Board(object): |
|
def __init__(self, name): |
|
self.name = name |
|
self.is_ap_periph = False |
|
|
|
|
|
class BoardList(object): |
|
|
|
def set_hwdef_dir(self): |
|
self.hwdef_dir = os.path.join( |
|
os.path.dirname(os.path.realpath(__file__)), |
|
"..", "..", "libraries", "AP_HAL_ChibiOS", "hwdef") |
|
|
|
if os.path.exists(self.hwdef_dir): |
|
return |
|
|
|
self.hwdef_dir = os.path.join( |
|
os.path.dirname(os.path.realpath(__file__)), |
|
"libraries", "AP_HAL_ChibiOS", "hwdef") |
|
|
|
if os.path.exists(self.hwdef_dir): |
|
# we're on the autotest server and have been copied in |
|
# to the APM root directory |
|
return |
|
|
|
raise ValueError("Did not find hwdef_dir") |
|
|
|
def __init__(self): |
|
self.set_hwdef_dir() |
|
|
|
# no hwdefs for Linux boards - yet? |
|
self.boards = [ |
|
Board("erlebrain2"), |
|
Board("navigator"), |
|
Board("navio"), |
|
Board("navio2"), |
|
Board("edge"), |
|
Board("obal"), |
|
Board("pxf"), |
|
Board("bbbmini"), |
|
Board("blue"), |
|
Board("pxfmini"), |
|
Board("SITL_x86_64_linux_gnu"), |
|
Board("SITL_arm_linux_gnueabihf"), |
|
] |
|
|
|
for adir in os.listdir(self.hwdef_dir): |
|
if adir is None: |
|
continue |
|
if not os.path.isdir(os.path.join(self.hwdef_dir, adir)): |
|
continue |
|
if adir in ["scripts", "common", "STM32CubeConf"]: |
|
continue |
|
filepath = os.path.join(self.hwdef_dir, adir, "hwdef.dat") |
|
if not os.path.exists(filepath): |
|
continue |
|
filepath = os.path.join(self.hwdef_dir, adir, "hwdef.dat") |
|
text = self.read_hwdef(filepath) |
|
|
|
board = Board(adir) |
|
self.boards.append(board) |
|
for line in text: |
|
if re.match(r"^\s*env AP_PERIPH 1", line): |
|
board.is_ap_periph = 1 |
|
if re.match(r"^\s*env AP_PERIPH_HEAVY 1", line): |
|
board.is_ap_periph = 1 |
|
|
|
def read_hwdef(self, filepath): |
|
fh = open(filepath) |
|
ret = [] |
|
text = fh.readlines() |
|
for line in text: |
|
m = re.match(r"^\s*include\s+(.+)\s*$", line) |
|
if m is not None: |
|
ret += self.read_hwdef(os.path.join(os.path.dirname(filepath), m.group(1))) |
|
else: |
|
ret += [line] |
|
return ret |
|
|
|
def find_autobuild_boards(self): |
|
ret = [] |
|
for board in self.boards: |
|
if board.is_ap_periph: |
|
continue |
|
ret.append(board.name) |
|
|
|
# these were missing in the original list for unknown reasons. |
|
# Omitting them for backwards-compatability here - but we |
|
# should probably have a line in the hwdef indicating they |
|
# shouldn't be auto-built... |
|
blacklist = [ |
|
# the following boards are hacked into build_binaries.py |
|
# to be built for Copter only: |
|
"CubeGreen-solo", |
|
"CubeSolo", |
|
"skyviper-journey", |
|
"skyviper-v2450", |
|
|
|
# IOMCU: |
|
"iomcu", |
|
'iomcu_f103_8MHz', |
|
|
|
# evaluation boards |
|
'H757I_EVAL', |
|
'H757I_EVAL_intf', |
|
"Nucleo-G491", |
|
"NucleoH743", |
|
|
|
# bdshot |
|
"CubeYellow-bdshot", |
|
"fmuv3-bdshot", |
|
"KakuteF7-bdshot", |
|
"OMNIBUSF7V2-bdshot", |
|
"Pixhawk1-1M-bdshot", |
|
|
|
# other |
|
"crazyflie2", |
|
"CubeOrange-joey", |
|
"luminousbee4", |
|
"MazzyStarDrone", |
|
"omnibusf4pro-one", |
|
"skyviper-f412-rev1", |
|
] |
|
|
|
ret = filter(lambda x : x not in blacklist, ret) |
|
|
|
return list(ret) |
|
|
|
def find_ap_periph_boards(self): |
|
blacklist = [ |
|
"CubeOrange-periph-heavy", |
|
"f103-HWESC", |
|
"f103-Trigger", |
|
"G4-ESC", |
|
"HereID", |
|
"HerePro", |
|
|
|
# evaluation boards |
|
"H757I_EVAL", |
|
"Nucleo-L476", |
|
"Nucleo-L496", |
|
] |
|
ret = [] |
|
for x in self.boards: |
|
if not x.is_ap_periph: |
|
continue |
|
if x.name in blacklist: |
|
continue |
|
ret.append(x.name) |
|
return list(ret) |
|
|
|
|
|
AUTOBUILD_BOARDS = BoardList().find_autobuild_boards() |
|
AP_PERIPH_BOARDS = BoardList().find_ap_periph_boards()
|
|
|