1
0
Fork 0

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:
Christian Kühnel 2020-04-23 11:22:24 +02:00
parent 51734a7175
commit 71144d1922
3 changed files with 23 additions and 12 deletions

View file

@ -25,7 +25,7 @@ import logging
import os import os
import platform import platform
import sys import sys
from typing import Dict, List, Set, Tuple from typing import Dict, List, Set, Tuple, Optional
from unidiff import PatchSet from unidiff import PatchSet
import yaml import yaml
@ -43,8 +43,8 @@ class ChooseProjects:
# projects used if anything goes wrong # projects used if anything goes wrong
FALLBACK_PROJECTS = ['all'] FALLBACK_PROJECTS = ['all']
def __init__(self, llvm_dir: str): def __init__(self, llvm_dir: Optional[str]):
self.llvm_dir = llvm_dir self.llvm_dir = llvm_dir # type: Optional[str]
self.defaultProjects = dict() # type: Dict[str, Dict[str, str]] self.defaultProjects = dict() # type: Dict[str, Dict[str, str]]
self.dependencies = dict() # type: Dict[str,List[str]] self.dependencies = dict() # type: Dict[str,List[str]]
self.usages = dict() # type: Dict[str,List[str]] self.usages = dict() # type: Dict[str,List[str]]
@ -72,6 +72,9 @@ class ChooseProjects:
return 'linux' return 'linux'
def choose_projects(self, patch: str = None) -> List[str]: 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)) llvm_dir = os.path.abspath(os.path.expanduser(self.llvm_dir))
logging.info('Scanning LLVM in {}'.format(llvm_dir)) logging.info('Scanning LLVM in {}'.format(llvm_dir))
if not self.match_projects_dirs(): if not self.match_projects_dirs():
@ -165,6 +168,11 @@ class ChooseProjects:
result.update(changes) result.update(changes)
return result 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__": if __name__ == "__main__":
logging.basicConfig(filename='choose_projects.log', level=logging.INFO) logging.basicConfig(filename='choose_projects.log', level=logging.INFO)

View file

@ -17,7 +17,6 @@ import argparse
from enum import Enum from enum import Enum
from git import Repo from git import Repo
import os import os
from pathlib import Path
import platform import platform
import shutil import shutil
import subprocess import subprocess
@ -34,6 +33,11 @@ class OperatingSystem(Enum):
class Configuration: 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): def __init__(self, config_file_path: str):
with open(config_file_path) as config_file: 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._environment = config['environment'] # type: Dict[OperatingSystem, Dict[str, str]]
self.general_cmake_arguments = config['arguments']['general'] # type: List[str] self.general_cmake_arguments = config['arguments']['general'] # type: List[str]
self._specific_cmake_arguments = config['arguments'] # type: Dict[OperatingSystem, 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 self.operating_system = self._detect_os() # type: OperatingSystem
@property @property
@ -54,7 +57,13 @@ class Configuration:
@property @property
def default_projects(self) -> str: 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 @staticmethod
def _detect_os() -> OperatingSystem: def _detect_os() -> OperatingSystem:

View file

@ -28,9 +28,3 @@ arguments:
- '-DCMAKE_CXX_FLAGS=-gmlt' - '-DCMAKE_CXX_FLAGS=-gmlt'
windows: windows:
- '-D LLVM_ENABLE_DIA_SDK=OFF' - '-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'