def default_projects(self) -> str:
        """Get string of projects enabled by default.

        This returns all projects in the mono repo minus the project that were
        excluded for the current platform.
        """
        cp = ChooseProjects(None)
        return ';'.join(cp.get_all_enabled_projects())
def _select_projects(config: Configuration, projects: str,
                     repo_path: str) -> str:
    """select which projects to build.

    if projects == "default", a default configuraiton will be used.

    if project == "detect", ChooseProjects is used to magically detect the projects
         based on the files modified in HEAD
    """
    if projects == "default" or projects is None or len(projects) == 0:
        return config.default_projects
    if projects == "detect":
        cp = ChooseProjects(repo_path)
        repo = Repo('.')
        patch = repo.git.diff("HEAD~1")
        enabled_projects = ';'.join(cp.choose_projects(patch))
        if enabled_projects is None or len(enabled_projects) == 0:
            enabled_projects = cp.get_all_enabled_projects()
        return enabled_projects
    return projects
Пример #3
0
    projects = os.getenv('ph_projects', 'detect')
    log_level = os.getenv('ph_log_level', 'INFO')
    logging.basicConfig(level=log_level, format='%(levelname)-7s %(message)s')

    phid = os.getenv('ph_target_phid')
    url = f"https://reviews.llvm.org/D{os.getenv('ph_buildable_revision')}?id={diff_id}"
    annotate(
        f"Build for [D{os.getenv('ph_buildable_revision')}#{diff_id}]({url}). "
        f"[Harbormaster build](https://reviews.llvm.org/harbormaster/build/{os.getenv('ph_build_id')}).\n"
        f"If there is a build infrastructure issue, please [create a bug]({feedback_url()})."
    )

    # List all affected projects.
    repo = git.Repo('.')
    patch = repo.git.diff("HEAD~1")
    cp = ChooseProjects('.')
    modified_files = cp.get_changed_files(patch)
    modified_projects, unmapped_changes = cp.get_changed_projects(
        modified_files)
    if unmapped_changes:
        logging.warning(
            'There were changes that could not be mapped to a project. Checking everything'
        )
        modified_projects = cp.all_projects
    logging.info(f'modified projects: {modified_projects}')
    # Add projects that depend on modified.
    affected_projects = cp.get_affected_projects(modified_projects)
    steps = []
    projects = cp.add_dependencies(affected_projects)
    logging.info(f'projects with dependencies: {projects}')
    # Add generic Linux checks.