summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2025-05-05TreeOperationsUtils: make free-standing implementation functions member ↵Sascha Roloff
functions of the class
2025-05-05TreeOperationsUtils: refactor digest population into proto messagesSascha Roloff
2025-05-05TreeOperationsUtils: add missing switch case in bazel directory generationSascha Roloff
2025-05-05TreeOperationsUtils: fix typo in commentSascha Roloff
2025-04-25Invocation server: also present the artifacts of an invocationKlaus Aehlig
... if available. This can be useful, when presenting builds that are mainly there to have artifacts available for manual use.
2025-04-25just: make --dump-artifacts act cummulativelyKlaus Aehlig
2025-04-25just-mr: support invocation-specifing artifact dumpingKlaus Aehlig
2025-04-25Invocation http server: for tree entries offer direct download linksKlaus Aehlig
When showing a tree, we have for each entry already a designated file name. Use this, to offer direct dowload links for blobs with the intended name.
2025-04-25Invocation http server: indicate incomplete dataKlaus Aehlig
With just-mr supporting a custom prefix to be shown at the beginning of a logged invocation, users might be pointed to the web server very early. Therefore, properly indicate if the invocation data is not yet complete.
2025-04-25just-mr: support custom message with invocation-directory nameKlaus Aehlig
Allow to specify a custom string that is extended by the basename of the logging directory, in case invocation logging is activated. This can be used, e.g., to point to the user to service doing something useful with the logged data (or simply presenting it in a nicer form).
2025-04-24profile: fix path rebasingKlaus Aehlig
During execution, paths are relative to the working directory of the action; however, in our representation, all paths are always relative to the action root. Commit d65d711f844224dcf9215c52be8f69fd2885adfc tried to change the reporing to our usual standard, however got the direction wrong; fix this.
2025-04-24Invocation server: support download of all blobsKlaus Aehlig
For many text files it is useful to read them directly in the browser. However, many files that are better analysed by machines (like large repository configurations) also come as plain-text files. Therefore, always offer to download a file currently being viewed. Use the URL scheme in such a way that the name to download the file as can be specified; in this way, we are prepared if we decide to also log the artifacts to be built and offer those to be downloaded.
2025-04-23Tutorial: mention the possibility to browse individual invocationsKlaus Aehlig
2025-04-23Add simple http server allowing to browse an invocation-log directoryKlaus Aehlig
Being able to browse through past invocations of the build tool can actually be useful and doing so in the browser is a way many users prefer. Therefore, add a small WSGI application (written in python, using werkzeug and jinja) serving a directory of invocation logs via http.
2025-04-23debug-fission doc: Update with small design changesPaul Cristian Sarbu
2025-04-23toolchain: Add fallback DWP fieldPaul Cristian Sarbu
2025-04-23target just: Update flexible_config list and docstringsPaul Cristian Sarbu
Add the DWP variable to list of flexible_config. Also update the documentation of the DEBUG variable. While there, also fix a typo.
2025-04-23rules CC: Extend install-wih-deps to stage DWARF package filesPaul Cristian Sarbu
2025-04-23rules CC: Libraries and binaries provide DWARF package filesPaul Cristian Sarbu
The "library" and "binary" rules are modified to generate, if needed, the appropriate DWARF package from the DWARF objects of their compilation units and the DWARF package files of their link dependencies, if any. The resulting artifact is made available to consumers in the provides map.
2025-04-23expressions CC: Add expression generating DWARF packagesPaul Cristian Sarbu
2025-04-23expressions CC: Small refactoringPaul Cristian Sarbu
Allow the expressions running the actions producing the library and binary artifacts to pass along more information to consumers if needed by extending their return values to maps. Ensure the changes do not affect other consumers of the current expressions, such as the test rules, which do not expect extra information besides the single action artifact.
2025-04-23rules CC: Add DWP configuration variablePaul Cristian Sarbu
...defining the DWARF format packaging tool to use once debug fission is supported.
2025-04-23rules CC: Support debug fission in lintingPaul Cristian Sarbu
As the command passed to the linter can produce additional outputs if debug fission is enabled, pass those artifact paths in a new variable "extra outs", which the ["lint", "targets"] rule can then make it available in the meta.json file expected by the linter.
2025-04-23rules CC: Support debug fission in objectsPaul Cristian Sarbu
For this purpose, the DEBUG configuration variable is updated to expect a map with at least the USE_DEBUG_FISSION flag field. If set, compilation of source files is expected to produce besides the regular object file also a DWARF file.
2025-04-23rules CC proto: Update docstring for DEBUG variablePaul Cristian Sarbu
...to reflect the value change from boolean to map. Behavior of the proto rules remains the same, as only the truth value of the variable is currently being taken into account.
2025-04-23rules CC: Make DEBUG variable a mapPaul Cristian Sarbu
It expects now the key 'USE_DEBUG_FISSION', which enables debug fission, but does not add any flags on its own. For this, the 'FISSION_CONFIG' key is expected with certain entries that provide the compile and/or link flags that configure debug fission. The flags are added only where needed, i.e., before running or storing the respective compile or link actions.
2025-04-23rules CC: Use the -g flag as fallback in debug mode...Paul Cristian Sarbu
...if no flags are otherwise configured (by toolchain or rule-specific configuration variables).
2025-04-23rules CC defaults: Add DEBUGFLAGS and ADD_DEBUGFLAGS config varsPaul Cristian Sarbu
If in debug mode - DEBUGFLAGS replaces any resulting CFLAGS and CXXFLAGS, and - ADD_DEBUGFLAGS is appended to the resulting debug compile flags.
2025-04-23expressions CC: Remove unused importPaul Cristian Sarbu
2025-04-23tutorial: Update DEBUG config variable to mapPaul Cristian Sarbu
In preparation for the rule changes, to avoid introducing false positives during future bisections.
2025-04-23Make end-to-end tests independent of the user's configurationKlaus Aehlig
End-to-end tests should, like all tests, be independent of any non-project files the user has in their home directory. This also applies when running the tests locally. In particular, end-to-end tests should not read the user's ~/.just-mrrc. Therefore, properly set --norc in all end-to-end tests (where this is not already the case).
2025-04-22Remove redundant calls to std::filesystem::absoluteMaksim Denisov
...when calling std::filesystem::weakly_canonical, since the latter converts the argument path to an absolute path internally.
2025-04-22FileSystemManager: When copying, take into account equivalent files.Maksim Denisov
2025-04-22FileSystemManager: Always copy directories recursivelyMaksim Denisov
2025-04-22FileSystemManager: Always remove directories recursivelyMaksim Denisov
2025-04-17profile: also honor action cwdKlaus Aehlig
In all presentations of actions to the user, we use output paths relative to the root of the action directory. Therefore, we should do the same in the profile. However, when noting the completion of an action, we get paths as in the wire protocol, i.e., relative to the working directory of the action. Therefore, rebase appropriately.
2025-04-17archive.cpp: eliminate un-needed copies of payloadAlberto Sartori
2025-04-17bazel_msg_factory: avoid copies in lambdas...Alberto Sartori
and while there, replace `auto` with explicit signatures.
2025-04-17bazel_execution_client: eliminate one un-needed copyAlberto Sartori
2025-04-17ServeFailureReporter: use const& to avoid copiesAlberto Sartori
2025-04-17Add test verifying a meaningful invocation log in case of build failureKlaus Aehlig
2025-04-17main: ensure --profile is also honored for failed buildsKlaus Aehlig
We use a pointer to the actual Profile object to handle profiling, if requested. For this to work, actual object needs to stay in scope. However, we handle most of the operations, including parsing of arguments, in a global try-catch block. In order to be able to also correctly write a profile file outside this block, move the scope of the Profile object to top-level in main. While there, also improve the signature of the Profile class. That class is only meaningful, if a profile should eventually be writting to disk. So reflect this in the constructur. Also, once we know the file name to write the profile to (if any), we have already parsed the command line; so the making available of the command line to the profile can be enforced by adding this to the constructor as well. Co-authored-by: Denisov Maksim <denisov.maksim@huawei.com>
2025-04-16just profile: include subcommand and its argumentsKlaus Aehlig
As parsing the the command-line is non-trivial, we include all the relevant information about the command line in the profile. This should also include the subcommand. For sake of completeness, we also include the non-option arguments of the subcommand.
2025-04-16concepts, profiling: clarify scope of --profileKlaus Aehlig
2025-04-16just(1): fix list of subcommands supporting --profileKlaus Aehlig
2025-04-16just profile: include exit code of actionsKlaus Aehlig
Extend the profile by including non-zero exit codes of individual actions. When looking at an individual build invocation, the actions with non-zero exit code are often the interesting ones, like root cause of a build failure, or failing tests. Therefore, it is useful information to include this information; by leaving out the exit code if it is zero, we do not significantly increase the profile.
2025-04-16Add basic tutorial section on invocation loggingKlaus Aehlig
... under the advanced chapter of our tutorial.
2025-04-16README: separate basic tutorial from advanced topicsKlaus Aehlig
While it is useful to have an end-to-end example also for advanced topics, they should not be mixed with the basic tutorial showing how to use the tool to build a typical project (here in C/C++).
2025-04-14clean up markdown in tutorial and conceptsKlaus Aehlig
... and ensure that pandoc processes them correctly. In particular, add an empty line around itemize environments.
2025-04-11README: link profiling documentationKlaus Aehlig