summaryrefslogtreecommitdiff
path: root/src/buildtool/build_engine/target_map
AgeCommit message (Collapse)Author
2024-07-22Pass HashFunction to ArtifactDigest::CreateMaksim Denisov
2024-07-22Use HashFunction functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-07-12Use static Create functions to construct ArtifactDescriptionMaksim Denisov
...instead of unobvious ctors relying on overload resolution.
2024-07-05Pass Storage to RepositoryConfigMaksim Denisov
...and adjust AnalyseContext.
2024-06-27Capture ServeApi by pointer in AnalyseContextMaksim Denisov
2024-06-27Capture TargetCache by pointer in AnalyseContextMaksim Denisov
2024-06-25describe: also describe "configure" targets in more detailKlaus Aehlig
Most built-in rules are just described by their name, assuming they are known to the user anyway. One exception, however, are "export" targets, as those serve as interfaces to (logical) repositories and hence is supposed to have a documentation of the target itself. Over time, however, "configure" targets have evolved to become internal interfaces (maybe even for an external target), e.g., to provide default values and hence make better use of the actual export target. Therefore it is desirable to provide a bit more information when asked to describe a "configure" target. - As "configure" targets have a fixed set of keys, adding a "doc" field is a conservative extension; this can be useful to give an overview what the target is about. - An important information of a "configure" target is the target that is configured. While this, in general, is an expression, in the typical cases, the description is very short (a literal target name, or a variable). So we can afford to show the definition.
2024-06-18Make ServeApi a general class, not a singletonMaksim Denisov
...and adjust interfaces.
2024-06-18Pass ServeApi as a field of context to the analysisMaksim Denisov
...instead of using singleton calls.
2024-06-18Use an extensible structure to pass arguments to the analysis.Maksim Denisov
2024-06-18Use RemoteServeConfig functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-06-18Use ServeApi functionality via Instance()Maksim Denisov
...to track changes during refactoring easier.
2024-06-11Move creation of TargetCacheKey description to TargetCacheMaksim Denisov
...to use corresponding Storage for storing auxiliary information.
2024-06-04rule language: support SYMLINK functionKlaus Aehlig
... to allow generating symlinks as part of a rule, as it is already described in our documentation.
2024-05-17RepositoryConfig: Instance should not be changed once populatedPaul Cristian Sarbu
Once a RepositoryConfig instance gets populated, it must never be changed again. Therefore, all functions accepting these instances should only take them as pointers to const.
2024-05-15serve target: Improve logic for local build failure triggersPaul Cristian Sarbu
If the serve endpoint reports an internal error, local builds should not continue and the error message should be provided. Similarly, if the serve endpoint promises the target cache value to be in remote CAS, but the client cannot find or process it as needed, then a local build again should not continue and the reason be provided as an error message.
2024-05-14configured_target: limit size of short representationKlaus Aehlig
... to 320 chars for the configuration to keep error messages managable in case of heavy configurations (e.g., generated internally by a complex configure target).
2024-05-14target_map: show short description of configured targetsKlaus Aehlig
... to keep error messages more readable.
2024-04-25absent_target_map: fix target_file when requesting flexible variableKlaus Aehlig
... of an absent target. Here, the request is given by repository root and filename; so the filename is to be taken relative to the root, i.e., we have to prefix the targets-file name with the module.
2024-04-19Also for absent tragets, track progress by configured targetKlaus Aehlig
Commit f5f9be5bc07b16807aceac86fba9212e3889762a changed from tracking progress by cache key to tracking by configured target; however, the absent-target map was forgotten. Fix this while also switching to the shortend export-target representation introduced in the previous commit.
2024-04-19Export progress: report short configurationKlaus Aehlig
As we always analyse export targets in their canonical configuration (and do count in the progress the mapping from obtained configuraiton to canonical one), the shortend name (i.e., the representation with null values dropped form the configuration) is still a unique representation of the target. Use this in progress reporting to simplify reading the progress sample.
2024-04-16Absent targets: support registering the serve failure logsKlaus Aehlig
... in a structured way to eventually support machine-readable access to the identifiers of the log files.
2024-04-16target map: follow proper line-breaking conventionKlaus Aehlig
... in logger extension.
2024-04-12Target analysis: report short names of targets when describing a conflictKlaus Aehlig
Configured targets, by design, cannot distinguish between a value not occuring in the configuration and occuring there with value null. Therefore, to understand the conflict, we can as well drop all the null values of the target configuration when reporting it.
2024-04-11configured target: support short representationKlaus Aehlig
... with only the non-null entries of the configuration. This information is enough for the user to build this target, e.g., when searching for the cause of a build failure.
2024-04-08Use properly included standard library types by defaultPaul Cristian Sarbu
2024-04-08Consistently guard all POSIX C includesPaul Cristian Sarbu
2024-04-05User-defined rules: annotate revelant objects relevant to evaluation errors.Klaus Aehlig
2024-04-05built-in rules: describe staging conflict in more detailKlaus Aehlig
Mentioning in particular the involved artifacts as well as the direct dependencies that brought them in. Here, we are in a simple situation as all built-in rules that check conflicts only use artifacts and runfiles of their dependencies, but not the provided data. Also, the built-in rules that check staging conflicts do not do configuration transitions, hence it is enough to show the target name of the dependencies containing the artifact if for the built-in target we show the configuration.
2024-03-26Add missing system includesPaul Cristian Sarbu
Main culprits: - std::size_t, std::nullptr_t, and NULL require <cstddef> - std::move and std::forward require <utility> - unordered maps and sets require respective includes - std::for_each and std::all_of require <algorithm>
2024-03-22Absent target: deduplicate serve calls asking for flexible variablesKlaus Aehlig
For an absent export target, the first step of analysis is to ask serve for the flexible variables. The answer to this request is, however, independent of the configuration for this target. So we can avoid calls by caching the answer in an additional map.
2024-03-22Avoid unnecessary calls to serve for export targetsKlaus Aehlig
For export targets, we know ahead of time the effective configuration; so, if the current configuration is not the effective anyway, we can simply analyse the effective configuration and take that result. In this way, we can avoid calls to serve if a target is analysed in two configurations that coincide on the flexible variables.
2024-03-22Avoid unnecessary analysis of export targetsKlaus Aehlig
For export targets, we know ahead of time the effective configuration; so, if the current configuration is not the effective anyway, we can simply analyse the effective configuration and take that result. As a side effect, we also count the number of observed export targets correctly.
2024-03-19serve target: Differentiate between fatal and non-fatal orchestrated buildsPaul Cristian Sarbu
...by increasing granularity in client-side reporting. This allows to correctly continue with builds of local targets if the serve endpoint does not have the requested target, as well as improve the reporting for users on failure.
2024-03-19result_map: Be explicit in logging location when getting results...Paul Cristian Sarbu
...by allowing a Logger instance to be provided.
2024-03-15Clean up more includes and targetsPaul Cristian Sarbu
Some of the more specific issues addressed: - missing log_level target/include - header-only libs wrongly marking deps as private - missing/misplaced gsl includes
2024-03-12Export-target progress reporting: report the target nameKlaus Aehlig
... with effective config instead of the actual cache key, which is simply a blob identifier that is probably not so meaningful for the user watching the build.
2024-03-12target evalution: handle error in dependency evaluationKlaus Aehlig
... instead of blindly assuming the evaluation succeeds. Co-authord-by: Paul Cristian Sarbu <paul.cristian.sarbu@huawei.com>
2024-03-12just serve: Improve progress reportingPaul Cristian Sarbu
During analysis it is useful to track and report the progress for all export targets. This is not exclusively linked to a serve endpoint being present, despite most of the time being expected to be spent in export targets being served from the remote endpoint. This commit refactors the current implementation to give proper feedback to the user on the progress of the analysis phase.
2024-03-11target_map: Typo fix in log messagePaul Cristian Sarbu
2024-03-11just: Replace singletons for progress tracking and statistics...Paul Cristian Sarbu
...with regular instances that have controlled life-times. This avoids race conditions in tracking and reporting the results of analysis and build, as the serve endpoint can orchestrate multiple builds at the same time asynchronously. As a bonus side-effect this also ensures the correctness of the progress reporting per orchestrated build.
2024-03-11just analyse: Use explicit target cache instancePaul Cristian Sarbu
The serve endpoint always has to access the correctly sharded target cache, including during analysis. For this purpose, the target cache instance interrogated during analysis has to be explicitly provided.
2024-03-07absent_target_map: Improve log messagesPaul Cristian Sarbu
2024-02-16async maps: Create utility library to handle cycle detectionPaul Cristian Sarbu
2024-02-08Target map: on error in rule look up, report the rule being looked forKlaus Aehlig
2024-01-31just serve: Cleanup logging to remove tool namePaul Cristian Sarbu
Also cleans up the logging when parsing the serve service configuration file.
2024-01-16Analysed target: keep track of implied export targetsKlaus Aehlig
... that are eligible for caching. In this way, we can accurately keep track of the dependencies between target-level cache entries. Note that it is enough to track the export targets eligible for caching, as no target depending on an ineligible export target can be eligible.
2023-12-20just: Query serve endpoint during analysis for non-cached export targetsPaul Cristian Sarbu
2023-12-14target_map: Remove unneeded method to perform endpoint consistency checkPaul Cristian Sarbu
As we already have a good enough API call and in order to improve specificity in log messages, there is no need for one more level of abstraction. This will also make it easier to drop in the future this check (if deemed unnecessary anymore), while keeping in place the mandatory check that a serve endpoint has been configured.
2023-12-12just: Report progress of export targets served during analysisPaul Cristian Sarbu