By default: building all enabled projects.
This is the fallback solution in case the project detection fails for whatever reason. This is also used for building the master branches.
This commit is contained in:
parent
51734a7175
commit
71144d1922
3 changed files with 23 additions and 12 deletions
|
@ -25,7 +25,7 @@ import logging
|
|||
import os
|
||||
import platform
|
||||
import sys
|
||||
from typing import Dict, List, Set, Tuple
|
||||
from typing import Dict, List, Set, Tuple, Optional
|
||||
|
||||
from unidiff import PatchSet
|
||||
import yaml
|
||||
|
@ -43,8 +43,8 @@ class ChooseProjects:
|
|||
# projects used if anything goes wrong
|
||||
FALLBACK_PROJECTS = ['all']
|
||||
|
||||
def __init__(self, llvm_dir: str):
|
||||
self.llvm_dir = llvm_dir
|
||||
def __init__(self, llvm_dir: Optional[str]):
|
||||
self.llvm_dir = llvm_dir # type: Optional[str]
|
||||
self.defaultProjects = dict() # type: Dict[str, Dict[str, str]]
|
||||
self.dependencies = dict() # type: Dict[str,List[str]]
|
||||
self.usages = dict() # type: Dict[str,List[str]]
|
||||
|
@ -72,6 +72,9 @@ class ChooseProjects:
|
|||
return 'linux'
|
||||
|
||||
def choose_projects(self, patch: str = None) -> List[str]:
|
||||
if self.llvm_dir is None:
|
||||
raise ValueError('path to llvm folder must be set in ChooseProject.')
|
||||
|
||||
llvm_dir = os.path.abspath(os.path.expanduser(self.llvm_dir))
|
||||
logging.info('Scanning LLVM in {}'.format(llvm_dir))
|
||||
if not self.match_projects_dirs():
|
||||
|
@ -165,6 +168,11 @@ class ChooseProjects:
|
|||
result.update(changes)
|
||||
return result
|
||||
|
||||
def get_all_enabled_projects(self) -> List[str]:
|
||||
"""Get list of all not-excluded projects for current platform."""
|
||||
result = set(self.all_projects) - self.excluded_projects
|
||||
return sorted(list(result))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
logging.basicConfig(filename='choose_projects.log', level=logging.INFO)
|
||||
|
|
|
@ -17,7 +17,6 @@ import argparse
|
|||
from enum import Enum
|
||||
from git import Repo
|
||||
import os
|
||||
from pathlib import Path
|
||||
import platform
|
||||
import shutil
|
||||
import subprocess
|
||||
|
@ -34,6 +33,11 @@ class OperatingSystem(Enum):
|
|||
|
||||
|
||||
class Configuration:
|
||||
"""Configuration for running cmake.
|
||||
|
||||
The data is mostly read from the file `run_cmake_config.yaml`
|
||||
residing in the same folder as this script.
|
||||
"""
|
||||
|
||||
def __init__(self, config_file_path: str):
|
||||
with open(config_file_path) as config_file:
|
||||
|
@ -41,7 +45,6 @@ class Configuration:
|
|||
self._environment = config['environment'] # type: Dict[OperatingSystem, Dict[str, str]]
|
||||
self.general_cmake_arguments = config['arguments']['general'] # type: List[str]
|
||||
self._specific_cmake_arguments = config['arguments'] # type: Dict[OperatingSystem, List[str]]
|
||||
self._default_projects = config['default_projects'] # type: Dict[OperatingSystem, str]
|
||||
self.operating_system = self._detect_os() # type: OperatingSystem
|
||||
|
||||
@property
|
||||
|
@ -54,7 +57,13 @@ class Configuration:
|
|||
|
||||
@property
|
||||
def default_projects(self) -> str:
|
||||
return self._default_projects[self.operating_system.value]
|
||||
"""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())
|
||||
|
||||
@staticmethod
|
||||
def _detect_os() -> OperatingSystem:
|
||||
|
|
|
@ -28,9 +28,3 @@ arguments:
|
|||
- '-DCMAKE_CXX_FLAGS=-gmlt'
|
||||
windows:
|
||||
- '-D LLVM_ENABLE_DIA_SDK=OFF'
|
||||
|
||||
# if the automatic project detection fails or is not used, these projects are
|
||||
# enabled
|
||||
default_projects:
|
||||
windows: 'clang;clang-tools-extra;libcxx;libc;lld;mlir;libcxxabi'
|
||||
linux: 'clang;clang-tools-extra;libc;libcxx;libcxxabi;lld;libunwind;mlir;flang'
|
||||
|
|
Loading…
Reference in a new issue