From 55105641911295c1dd1073d6b1f79a148e666784 Mon Sep 17 00:00:00 2001 From: Tristan van Berkom Date: Tue, 11 Aug 2020 13:04:02 +0900 Subject: doc: Updating architecture overview to remove mentions of MetaElement --- doc/source/image-sources/arch-overview.odg | Bin 20118 -> 20818 bytes doc/source/images/arch-overview.svg | 3923 ++++++++++++++-------------- 2 files changed, 1959 insertions(+), 1964 deletions(-) (limited to 'doc') diff --git a/doc/source/image-sources/arch-overview.odg b/doc/source/image-sources/arch-overview.odg index 2f342987b..662db1aa0 100644 Binary files a/doc/source/image-sources/arch-overview.odg and b/doc/source/image-sources/arch-overview.odg differ diff --git a/doc/source/images/arch-overview.svg b/doc/source/images/arch-overview.svg index 69c837465..738a6a800 100644 --- a/doc/source/images/arch-overview.svg +++ b/doc/source/images/arch-overview.svg @@ -5,221 +5,227 @@ + + + - + - + - + - - - - - + + + + + - - - - - - + + + + + + - + - - - - - + + + + + - - - - - - - + + + + + + + - - + + - - - - - - - - - - - - - + + + + + + + + + + + + + - - - - - + + + + + - - + + - + - + - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - - - - + + + + - + - - + + - - + + + - - + + - - + + - - - + + - + - - - - - - + + + + + + - - - + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - + + + - + - + - + - + - + - + - + - + - + - + + + + @@ -230,1825 +236,1814 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Frontend - - - - - - - - - - - - - Main Entry Point (cli.py)Implements command line interface - - - - - - - - - - - - - Main Application State (App)Initializes the “Stream”, handles logging and user interactions - - - - - - - - - - - - - - - - - - - - Loggerwidget.py - - - - - - - - - - - - - Status Barstatus.py - - - - - - - - - - - - - Completionscomplete.py - - - - - - - - - - - - - Color profilesprofile.py - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Core, Frontend facing API - - - - - - - - - - - - - ContextUser configuration, CLI arguments - - - - - - - - - - - - - - - - - - - - ProjectLoaded project.conf configuration - - - - - - StreamLoading of the project, implementation of all main user facing commands in the CLI - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Core Internals - - - - - - - - - - - - - PlatformAbstract class providing platform specific routines. - - - - - - The Frontend implements the main command line interface, status bar, master log formatting, and any interactivity with the user. This is cleanly separated from the core BuildStream application. - - - - - - - - - - - - - Scheduler(Scheduling of element processing jobs)The Scheduler is in charge of processing elements in job queues. - - - - - - - - - - - - - Job(Abstract tasks) - - - - - - - - - - - - - Queue(Abstract job queues) - - - - - - - - - - - - - Loader(Load the elements in a project)The loader loads elements and sources from the project directory, transforming them into data structures ready for Element and Source instantiation - - - - - - - - - - - - - LoadElement(Intermediate element) - - - - - - - - - - - - - MetaElement & MetaSource(Loader output) - - - - - - The Frontend creates the toplevel Project, Context and Stream, and receives Elements and Sources by way of loading the Stream. - - - - - - These represent the main active internal components which sit below the frontend facing business logic in terms of module stacking order. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - OptionsLoads and resolves project options, and processes conditional statements - - - - - - - - - - - - - VariablesResolves a collection of variables, and performs substitutions on strings containing variables - - - - - - - - - - - - - IncludesProcesses include statements and composites the resulting dictionaries - - - - - - YAML Parsing Utilities - - - - - - - - - - - - - YAMLLow level utilities for parsing YAML, storing the provenance of loaded values for error reporting, composition of dictionaries and validation of loaded values - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - utils.pyVarious miscellaneous utilities, includes the directory staging mechanics - - - - - - - - - - - - - signals.pyUtilities and context managers for dealing with UNIX signal handling - - - - - - - - - - - - - utils.pyVarious miscellaneous utilities, includes the directory staging mechanics - - - - - - - - - - - - - WorkspacesHelper object for (de)serialization of the workspace configuration - - - - - - Low Level Subsystems - - - - - - - - - - - - - Element, Source, and PluginData Model - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - CAS Server - - - - - - - - - - - - - CasServerContent Addressable Storage Server - - - - - - The CAS Server only needs to interact with Core Internals and lower levels of the stack. - - - - - - - - - - - - - CasCacheContent Addressable Storage implementation, used by the artifact cache and CAS server - - - - - - - - - - - - - FUSE / SafeHardlinksThe Fuse layer implements a copy on write hardlink experience for the Sandbox implementations - - - - - - - - - - - - - SourceFactory / ElementFactoryLow level factory for instantiating Source and Element plugins, one plugin namespace per project - - - - - - - - - - - - - ArtifactCacheArtifact Storage Module - - - - - - - - - - - - - SandboxAbstract Class for running commands in the isolated build environment + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Frontend + + + + + + + + + + + + + Main Entry Point (cli.py)Implements command line interface + + + + + + + + + + + + + Main Application State (App)Initializes the “Stream”, handles logging and user interactions + + + + + + + + + + + + + + + + + + + + Loggerwidget.py + + + + + + + + + + + + + Status Barstatus.py + + + + + + + + + + + + + Completionscomplete.py + + + + + + + + + + + + + Color profilesprofile.py + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core, Frontend facing API + + + + + + + + + + + + + ContextUser configuration, CLI arguments + + + + + + + + + + + + + + + + + + + + ProjectLoaded project.conf configuration + + + + + + StreamLoading of the project, implementation of all main user facing commands in the CLI + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Core Internals + + + + + + + + + + + + + PlatformAbstract class providing platform specific routines. + + + + + + The Frontend implements the main command line interface, status bar, master log formatting, and any interactivity with the user. This is cleanly separated from the core BuildStream application. + + + + + + + + + + + + + Scheduler(Scheduling of element processing jobs)The Scheduler is in charge of processing elements in job queues. + + + + + + + + + + + + + Job(Abstract tasks) + + + + + + + + + + + + + Queue(Abstract job queues) + + + + + + + + + + + + + Loader(Load the elements in a project)The loader loads elements and sources from the project directory, transforming them into data structures ready for Element and Source instantiation + + + + + + + + + + + + + LoadElement, Dependency(Loader data model) + + + + + + The Frontend creates the toplevel Project, Context and Stream, and receives Elements and Sources by way of loading the Stream. + + + + + + These represent the main active internal components which sit below the frontend facing business logic in terms of module stacking order. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + OptionsLoads and resolves project options, and processes conditional statements + + + + + + + + + + + + + VariablesResolves a collection of variables, and performs substitutions on strings containing variables + + + + + + + + + + + + + IncludesProcesses include statements and composites the resulting dictionaries + + + + + + YAML Parsing Utilities + + + + + + + + + + + + + YAMLLow level utilities for parsing YAML, storing the provenance of loaded values for error reporting, composition of dictionaries and validation of loaded values + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + utils.pyVarious miscellaneous utilities, includes the directory staging mechanics + + + + + + + + + + + + + signals.pyUtilities and context managers for dealing with UNIX signal handling + + + + + + + + + + + + + utils.pyVarious miscellaneous utilities, includes the directory staging mechanics + + + + + + + + + + + + + WorkspacesHelper object for (de)serialization of the workspace configuration + + + + + + Low Level Subsystems + + + + + + + + + + + + + Element, Source, and PluginData Model + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + CAS Server + + + + + + + + + + + + + CasServerContent Addressable Storage Server + + + + + + The CAS Server only needs to interact with Core Internals and lower levels of the stack. + + + + + + + + + + + + + CasCacheContent Addressable Storage implementation, used by the artifact cache and CAS server + + + + + + + + + + + + + FUSE / SafeHardlinksThe Fuse layer implements a copy on write hardlink experience for the Sandbox implementations + + + + + + + + + + + + + SourceFactory / ElementFactoryLow level factory for instantiating Source and Element plugins, one plugin namespace per project + + + + + + + + + + + + + ArtifactCacheArtifact Storage Module + + + + + + + + + + + + + SandboxAbstract Class for running commands in the isolated build environment + -- cgit v1.2.1