def build(self, dry_run: bool=False, progress: str='', keep_source=False, keep_build=False, conan_login=False, build_missing=False) -> None:
    images_and_versions = []
    for (image, version) in self.group_info.iter_images_versions(get_image=True):
        if ((self.group_info.type == constants.ImageType.PACKAGE) and (not self.use_conan) and self.index.is_conan_only_package(image)):
            logger.warning('Skipping %s as it is a conan-only package!', image)
            continue
        images_and_versions.append((image, version))
    if (not images_and_versions):
        return
    path = self.make_bake_jsonfile()
    if path:
        self._run(f'docker buildx bake -f {path} --progress {progress}', dry_run=dry_run)
    if ((not self.use_conan) or (self.group_info.type == constants.ImageType.IMAGE)):
        return
    conan_base = os.path.join(utils.get_git_top_level(), 'packages', 'conan')
    for (image, version) in images_and_versions:
        recipe_path = os.path.join(conan_base, 'recipes', image)
        if (not os.path.exists(recipe_path)):
            logger.warning('Recipe for %s not found: skipping!', image)
            continue
        self._build_conan_package(image, version, dry_run, keep_source, keep_build, conan_login, build_missing)
def build(self, dry_run: bool=False, progress: str=, keep_source=False, keep_build=False, conan_login=False, build_missing=False) -> None:
    images_and_versions = []
    for (image, version) in self.group_info.iter_images_versions(get_image=True):
        if ((self.group_info.type == constants.ImageType.PACKAGE) and (not self.use_conan) and self.index.is_conan_only_package(image)):
            logger.warning('Skipping %s as it is a conan-only package!', image)
            continue
        images_and_versions.append((image, version))
    if (not images_and_versions):
        return
    path = self.make_bake_jsonfile()
    if path:
        self._run(f'docker buildx bake -f {path} --progress {progress}', dry_run=dry_run)
    if ((not self.use_conan) or (self.group_info.type == constants.ImageType.IMAGE)):
        return
    conan_base = os.path.join(utils.get_git_top_level(), 'packages', 'conan')
    for (image, version) in images_and_versions:
        recipe_path = os.path.join(conan_base, 'recipes', image)
        if (not os.path.exists(recipe_path)):
            logger.warning('Recipe for %s not found: skipping!', image)
            continue
        self._build_conan_package(image, version, dry_run, keep_source, keep_build, conan_login, build_missing)