def find_BSPs()

in versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/versions/master/build.py [0:0]


def find_BSPs():
    bsp_dir = path.join(cwd, '../mynewt-core', BSP_DIR)
    if not path.isdir(bsp_dir):
        raise Exception("The directory %s does not exist".format(bsp_dir))
    bsps = []
    for bsp in listdir(bsp_dir):
        with open(path.join(bsp_dir, bsp, "bsp.yml"), 'r') as f:
            data = yaml.full_load(f)
            if data.get('bsp.exclude_site') == 1:
                print("{} has 'exclude_site' set, skipping".format(bsp))
                continue
            for k in ['bsp.name', 'bsp.url', 'bsp.maker', 'bsp.arch']:
                if k not in data:
                    print("{} is missing metadata".format(bsp))
                    break
            else:
                bsp = BSP(name=data['bsp.name'], url=data['bsp.url'],
                          maker=data['bsp.maker'], arch=data['bsp.arch'])
                bsps.append(bsp)
    bsps_sorted = sorted(bsps, key=lambda bsp: bsp.name.lower())
    return bsps_sorted