Age | Commit message (Collapse) | Author |
|
|
|
... describing the fixes cherry-picked.
|
|
(cherry-picked from 1e5cc37df36204474cedef68486ba8b29492d259)
|
|
... and also perform conflict check on the normalized paths. Still,
the the output of the "ACTION" funtion be keyed by the representation
of the paths as originally described, to allow the author of a rule
to use non-normalized paths as well.
(cherry-picked from 74a5fbc9644eda7f105d2d2c672a41fa5c34c6a8)
|
|
Due to the specifics of how CLI11 library handles the --help
argument and the fact that just-mr uses its own set of exit codes,
we were correctly printing the help text, but falsely returning a
non-zero exit code as result.
This is now fixed.
(cherry-picked form faa8fc156ed8314db23a2d1612975ee745a50ade)
|
|
During multithreaded splicing, the main process can be forked (inheriting open file descriptors). In this case, the executable file saved using hardlinking becomes inaccessible. To prevent this, executables must be stored as copies made in a child process.
(cherry-picked from a336b835ee0831ba5fe2f4e8f9b1773eff68416b)
|
|
After successful build of an export target target a cache entry is
written. As those export targets have a dependency structure, care
is taken to write them in correct order.
Writing a cache entry for an export target requires knowledge of
the analysis result of that target. Originally, all targets used
to be analysed locally, so that information was available for
every target that was not read from the local target cache already.
However, with the introduction of serve endpoints, it can happen
that a target was analyzed locally, but it depends on targets
obtained from serve. In this case, we have to refrain from writing
a target-level cache entry to keep the the consistency invariants
of the target-level cache.
(cherry-picked from f63d3df866a2d75b694c8c484b21fbcdccd58acd)
|
|
...fixing potentially dangerous code (evaluation order is unspecified).
(cherry-picked from b91f39d2429704859e799bff2554fc40636438f9)
|
|
|
|
|
|
describing the fixes cherry picked.
|
|
When populating the GitTree instance stored in a Git tree-type
FileRoot with the ignore-special flag set, the GitTree instance
would be created with an empty raw_id_ field, signaling that some
of the entries might have been skipped and thus the root tree id
is not anymore in a one-to-one correspondence with the stored list
of entries.
This however caused FileRoot instances with missing tree id
information. This commit fixes the issue by always storing the
raw_id_ field as the root id of the Git tree, as well as clarifying
the relationship between this field and the ignore_special_ flag,
including refactoring the tree id getters.
(cherry picked from 06336198a38ffaec6c35df34580391579a7a7b22)
|
|
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.
(cherry picked from ab0a06871391a84c9b904bc9f2cd74ee1e8903ea)
|
|
(cherry-picked from aea775ed362a1d8e3c6a1e7d87a793bfdcddfb0f)
|
|
... which is needed until this is merged:
https://boringssl-review.googlesource.com/c/boringssl/+/68227
(cherry-picked from 33065a3bfafb57cf00812ad1c75b4dfdf8d00ef7)
|
|
|
|
|
|
Our pkg config rule postprocesses the output of pkgconfig to add
options -rpath where appropriate. This postprocessing, however,
relies on (standard) tools from the environment, in particular
cat(1). Therefore, the environment (in particular PATH) needs to
be set properly for this auxilliary action.
|
|
Compared to the command line, the environment usually is quite
short. So including it in messages reporting about commands does
not introduce a lot of additional noise. However, knowing the
environment can help understanding an error message. Therefore, it
seems a good trade off to include it. Do so.
|
|
... and document the implementation in the concepts documentation.
|
|
|
|
|
|
|
|
|
|
The gsl-lite implementation is slightly more picky in terms of
type conversions and constness resolution in initializers,
therefore small changes were needed.
|
|
|
|
|
|
|
|
|
|
... to simplify definition.
|
|
The C++ programming language is tightly related to the C programming
language. Consequently, the command line interface for C and C++
are also related and share quite a number of compile flags. Honor
this tight connection by have in our defaults a field allowing to
extend both compile flags, those for C as well as those for C++. In
this way, build defaults can be described in a more readable way.
|
|
|
|
|
|
... to allow test actions to have a larger time out, while not
changing anything in the build actions (and hence being able to
use cache hits from normal build of the library being tested).
|
|
...instead of using absolute values.
This was the desidered outcome all along and now it can be done
right thanks to the recently added multiplication expression.
|
|
|
|
To avoid lock contention, our task system queues tasks in several
queues. In order to know when there is no more work to be done, a
global counter keeps track of the total work. Here, it is important
that this counter be incremented before a value is added to the
queue, for otherwise some other thread could pick it up and decrement
the total work load, hence getting us in a state where the counter
underestimates the total amount of work to be done. Fix the order
of those operations.
|
|
... by taking the correct map to report which targets failed
to be analysed and also report about rules that failed to be
analysed.
|
|
|
|
Also aligning comments in server-side headers with the proto file
documentation.
|
|
... in particular that of the absent pragma which is addressed both,
in imports as well as in deduplication.
|
|
While just-deduplcate-repos only identifies repositories that are
semantically indistinguishable, there still is the pragma to consider.
- If the repository in one use requires to be present, we have to
fetch it, hence cannot treat it as absent.
- If a repository in one place has to be transformed to a git root,
this also has to happen for the copy we keep.
|
|
This allows to simply specify the direct dependencies desired
to be absent at import where the dependency structure is handled
anyway, rather than afterwards reconstructing which repositories
should be absent.
|
|
The runners used in tests that rely on execution or serve
endpoints to exist can get stuck waiting for these to become
online if for some reason they cannot be set up. This commit fixes
this issue by setting a reasonable timeout, after which we fail
gracefully.
|
|
Also updates the tests and all relevant documentation accordingly.
|
|
This will make it available also to just.
|
|
|
|
... 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.
|
|
The result of the analysis is a JSON object containing the keys
`"artifacts"`, `"runfiles"`, and `"provides"`. This JSON object, by
default, is logged. However, it might be useful to process the data
contained in it, while, for example, developing new rules.
This patch adds a new command line option (`--dump-result`), reserved
to the subcommand `analyse`, to dump the analysis result to the given
file or stdout (if `-` is given).
|
|
|