BMW IDC23 (IDC23H) next-generation infotainment head unit developed as Harman Becker/Garmin JV — GEN22 platform. Source: git@cc-github.bmwgroup.net:icgen5/idc-project.git Branch: master (gen22 release line) Submodules pinned at gen22-11.8.0-internal-rc (April 2021) Components: - ioc: I/O Controller (AUTOSAR, CommonAPI) - hmi: HMI framework (Qt/QML-based cluster graphics) - ic-hmi: Instrument Cluster HMI - sqhmi: Safety-Qualified HMI - hudd: Head-Up Display driver - muniic: Multi-NIC communication - fubi: Functional Bus (check control, DIM, ECI, ELC, ERM, BC, CBS, CC, ATP) - ramses: Runtimes for Adaptive AUTOSAR Middleware Services - cidd: CID Driver (SP21) - safegfxcmp: Safety GFX comparison - sim-gc: Simulation Graphics Compositor - sim-ui: UI Simulation harness - idc-app: Application layer - bin: Build toolchains (excluded from git) Build system: CMake + doit (Python task runner) Toolchain: GHS ARM32 for AUTOSAR, MSVC/Ninja for unittest CI: Zuul (zuul.d/) + stale-branch management
91 lines
3 KiB
Python
91 lines
3 KiB
Python
"""Root entry point for doit-based automation of this project."""
|
|
import logging
|
|
import os
|
|
import pathlib
|
|
|
|
import doit.tools
|
|
import icci.doit.util
|
|
|
|
_logger = logging.getLogger(__name__)
|
|
|
|
# output directory for all generated artifacts:
|
|
_output_dir = icci.doit.util.determine_output_dir()
|
|
|
|
DOIT_DATA_DIR = _output_dir / 'doit'
|
|
DOIT_DATA_DIR.mkdir(parents=True, exist_ok=True)
|
|
|
|
DOIT_CONFIG = dict(
|
|
# ---- configuration of doit -------------------------------------------------------------------
|
|
|
|
# path to doit dependency database:
|
|
dep_file=str(DOIT_DATA_DIR / '.doit.db'), # no pathlib here
|
|
|
|
# no default tasks are executed when just calling doit:
|
|
default_tasks=[],
|
|
|
|
# generally show stdout:
|
|
verbosity=2,
|
|
|
|
# Windows multiprocessing restrictive, actions in most cases separate processes anyway (no GIL):
|
|
par_type='thread',
|
|
|
|
# cleaning a task will also forget it was executed:
|
|
cleanforget=True,
|
|
|
|
# ---- configuration of icci.doit --------------------------------------------------------------
|
|
|
|
# to ease debugging, show internal tasks, may be overridden with envvar ICCI_LOG_LEVEL:
|
|
show_hidden_tasks=False,
|
|
|
|
# logging level, may be overridden with envvar ICCI_LOG_LEVEL:
|
|
log_level='INFO',
|
|
|
|
# URL of conan package server, possibly taken from environment variable:
|
|
conan_server_url=os.environ.get(
|
|
'ICCI_CONAN_SERVER_URL',
|
|
'https://icgen5.artifactory.cc.bmwgroup.net/artifactory/api/conan/ic-gen5-tools'
|
|
),
|
|
|
|
# URL of swldata server, possibly taken from environment variable:
|
|
swldata_server_url=os.environ.get(
|
|
'ICCI_SWLDATA_URL',
|
|
'https://icgen5.artifactory.cc.bmwgroup.net/artifactory/ic-gen5-data'
|
|
),
|
|
|
|
# URL of ts4ic Teamscale
|
|
ts4ic_url=os.environ.get(
|
|
'ICCI_TS4IC_URL',
|
|
'https://ts4ic.bmwgroup.net'
|
|
),
|
|
|
|
# list of directories searched for build configuration yaml files, in given order:
|
|
build_config_dirs=[
|
|
pathlib.Path('config', 'builds'),
|
|
pathlib.Path('util', 'icci-common', 'builds'),
|
|
],
|
|
|
|
# path to folder, where build artifacts and non-shared tools are stored:
|
|
output_dir=_output_dir,
|
|
|
|
# list of directories searched for code analysis configurations, in given order:
|
|
code_analysis_config_dirs=[
|
|
pathlib.Path('util', 'icci-common', 'code-analysis'),
|
|
pathlib.Path('hmi', 'repo', 'Configurations', 'CodeAnalysis'),
|
|
pathlib.Path('ic-hmi', 'repo', 'Configurations', 'CodeAnalysis'),
|
|
pathlib.Path('ioc', 'repo', 'config', 'code-analysis'),
|
|
pathlib.Path('ramses', 'repo', 'proprietary', 'config', 'code-analysis'),
|
|
pathlib.Path('safegfxcmp', 'repo', 'config', 'code-analysis'),
|
|
],
|
|
)
|
|
|
|
# pass configuration dictionary to our library so we can use the data:
|
|
icci.doit.initialize(DOIT_CONFIG)
|
|
_logger.debug(f'Output directory: {_output_dir}')
|
|
|
|
# make all tasks from library known to doit:
|
|
# noinspection PyUnresolvedReferences
|
|
from icci.doit.tasks import *
|
|
|
|
# allow calling this file directly, e.g. for debugging:
|
|
if __name__ == '__main__':
|
|
doit.run(globals())
|