Releases: oreiche/justbuild
Releases · oreiche/justbuild
v1.4.2
Bug fixes on top of 1.4.1
.
Fixes
- A race condition in the use of
libgit2
was fixed that could
result in a segmentation fault. - The Git cache root repository on a
just serve
endpoint is now
ensured to always exist and be initialized before being operated on. just-mr
properly enforces that repositorysubdir
entries are
non-upwards relative paths.- Various improvements in the documentation.
v1.5.0-alpha-1733926778
Merge branch 'just-buildsystem:master' into github-ci
v1.4.1
Bug fixes on top of 1.4.0
.
Fixes
- Fixes ensuring proper pointer life time and access check.
- Git operations are now properly locked against each other, also
between processes where necessary. just traverse
now exits unconditionally after traversal, also
in case of failure.- Missing entries in the documentation have been added.
v1.4.0
A feature release on top of 1.3.0
, backwards compatible with
respect to rule language, build description, repository description,
and wire protocols. However, the internal representation in local
build root has changed; it is therefore recommended to remove the
local build root on upgrade.
New features
just serve
now also works together with a compatible remote-execution
endpoint. This uses an extended version of the serve protocol, so
both,just-mr
andjust serve
need to be at the new version.- User-defined rules, as well as the built-in rule
"generic"
can
now specify a subdirectory in which an action is to be executed. just-mr
now supports garbage collection for repository roots
via thegc-repo
subcommand. This follows the same two-generation
approach as garbage collection for the cache-CAS pair; in
other words, everything is cleaned up that was not used since
the last call togc-repo
. To accommodate this, the layout in
the local build root had to be changed. The directorygit
as
well as*-map
directories are now located in the subdirectory
repositories/generation-0
. On upgrade those have to be manually
moved there if they should be continued to be used; removing the
whole local build root is, of course, also a valid upgrade path,
however losing the whole cache. Not doing anything on upgrade
will not lead to an inconsistent state; however, the directories
at the old location will not be used anymore while still using
disk space.- The expression language has been extended to contain quote
and quasi-quote expressions, as well as new built-in functions
"from_subdir"
,"nub_left"
.
Fixes
- The built-in rule
"generic"
now properly enforces that the
obtained outputs form a well-formed artifact stage; a conflicting
arrangement of artifacts was possilbe beforehand. - The built-in expression functions
"join"
and"join_cmd"
now properly enforce that the argument is a list of strings.
So far, they used to accept a single string, treating it as a
singleton list. - A bug was fixed that cased
just serve
to fail with an internal
error when building against ignore-special roots. just
now accurately reports internal errors that occurred on
the serve endpoint.- Target-level cache entries are only written if all export targets
depended upon are also written to or found in cache; previously,
it was assumed that all export targets not analysed locally
were local cache hits, an assumption that no longer holds in
the presence of serve endpoints. This fixes a cache consistency
problem if the same remote-execution endpoint is used both, with
and without a serve endpoint. - A race condition in reconstructing executables from large CAS
has been removed that could lead to an open file descriptor being
kept alive for too long, resulting EBUSY failures of actions
using this binary. - Internal code clean up, reducing memory footprint, in particular
for simultaneous upload of a large number of blobs. - Avoidence of duplicate requests and performance improvements when
synchronizing artifacts with another CAS. - Dependencies have been updated to also build with gcc 14.
- Portability improvements of the code by not relying on implementation
details of the compiler. - Local execution no longer has the requirement that there exist
no more files with identical content than the hardlink limit of
the underlying file system. - Inside action descriptions, paths are always normalized; this improves
compatibility with existing remote-execution implementations. - The size of large object entries has been reduced. The cache
and CAS must be cleaned up since stable versions before1.4.0
cannot use the new format. - The way of storing intermediate keys of the action cache has
been changed. The cache must be cleaned up since stable versions
before1.4.0
cannot use the new format. - Various improvements to the tests: dispatching of the summary
action is now possible, tests are independent of a .just-mrrc
file the user might have in their home directory - Various improvements of the documentation.
v1.4.0-alpha-1730128894
Merge branch 'just-buildsystem:master' into github-ci
v1.3.2
Bug fixes on top of 1.3.1
.
Fixes
- Portability improvements of the code by not relying on implementation
details of the compiler. - Target-level cache entries are only written if all export targets
depended upon are also written to or found in cache; previously,
it was assumed that all export targets not analysed locally
were local cache hits, an assumption that no longer holds in
the presence of serve endpoints. This fixes a cache consistency
problem if the same remote-execution endpoint is used both, with
and without a serve endpoint. - A race condition in reconstructing executables from large CAS
has been removed that could lead to an open file descriptor being
kept alive for too long, resulting EBUSY failures of actions
using this binary. - Inside action descriptions, paths are always normalized; this improves
compatibility with existing remote-execution implementations. just-mr --help
now returns exit code 0- Missing output directories of actions are now reported properly.
v1.3.1
Bug fixes on top of 1.3.0
.
Fixes
- A bug was fixed that cased
just serve
to fail with an internal
error when building against ignore-special roots. just
now accurately reports internal errors that occured on
the serve endpoint.- Dependencies have been updated to also build with gcc 14.
v1.3.0
A feature release on top of 1.2.0
, backwards compatible.
Major new features
- New subcommand
just serve
to start a target-level caching service,
as described in the corresponding design document. just-mr
is able to back up and retrieve distribution files
from a remote execution endpoint. This simplifies usage in an
environment with restricted internet access.just execute
now supports blob splitting as new RPC call.
just install
uses this call to reduce traffic if the remote-execution
endpoint supports blob splitting and the--remember
option is given.
In this way, traffic from the remote-execution endpoint can be reduced
when subsequently installing artifacts with only small local
differences.
Other changes
- New script
just-deduplicate-repos
to avoid blow up of the
repos.json
in the case of chained imports with common dependencies. - New subcommand
add-to-cas
to add files and directories to the local
CAS and optionally also copy them to the remote-execution endpoint. - The built-in
"generic"
rule now supports an argument"sh -c"
,
allowing to specify the invocation of the shell (defaulting to
["sh", "-c"]
). just describe
also shows the values of the implicit dependencies.just-mr
supports a new form of root, called"foreign file"
.- When
just-mr
executes the action to generate the desired tree of a
"git tree"
repository, it can be specified that certain variables
of the environment can be inherited. - The just-mr rc file now supports a field
"rc files"
to include
other rc files given by location objects; in particular, it is
possible to include rc files committed to the workspace. - Support for fetching archives from FTP and TFTP was added to
just-mr
if it was built with bundled curl. For package builds, libcurl has
enabled whatever the distro considers suitable. - The
gc
subcommand supports an option--no-rotate
to carry
out only local clean up. Part of that local clean up, that is
also done as part of a fullgc
, is splitting large files. Note
that stable versions before1.3.0
cannot use those split files.
Hence a downgrade after agc
with1.3.0
(or higher) requires
cleaning of cache and CAS. - The expression language has been extended and, in particular,
allows indexed access to an array (basically using it as a tuple)
and a generic form of assertion (to report user errors). - The
analyse
subcommand supports a new flag--dump-result
to dump
the analysis result to a file or stdout (if-
is given).
Fixes
- The cache key used for an export target is now based on the
export target itself rather than that of the exported target. The
latter could lead to spurious cache hits, but only in the case
where the exported target was an explicit file reference, and a
regular target with the same name existed as well. Where the new
cache keys would overlap with the old ones, they would refer to
the same configured targets. However, we used the fact that we
changed the target cache key to also clean up the serialization
format to only contain the JSON object describing repository,
target, and effective configuration, instead of a singleton list
containing this object. Therefore, old and new cache keys do not
overlap at all. In particular, no special care has to be taken
on upgrading or downgrading. However, old target-level cache
entries will not be used leading potentially to rebuilding of
some targets. - Garbage collection now honors the dependencies of target-level
caches entries on one another. When upgrading in place, this only
applies for target-level cache entries written initially after
the upgrade. - The taintedness of
"configure"
targets is now propagated
correctly in analysis. - It is no longer incorrectly assumed that every
git
URL not
starting withssh://
,http://
, norhttps://
is a file on the
local disk. Now, only URLs starting with/
,./
, orfile://
are considered file URLs. File URLs, as well as URLs starting
withgit://
,http://
, orhttps://
, are handled byjust-mr
usinglibgit2
; for every other URL,just-mr
shells out to
git
for fetching and the URL is passed togit
unchanged. - Improved portability and update of the bundled dependencies.
- Various minor improvements and typo fixes in the documentation.
- Fixed a race condition in the task queue that could cause (with
probability roughly 1e-5) a premature termination of the queue
resulting in spurious analysis failures without explanation (despite
"failed to analyse target"). - Fixed a race condition in an internal cache of
just execute
used for keeping track of running operations. - The built-in rule
"install"
now properly enforces that the
resulting stage is well-formed, i.e., without tree conflicts. - Local execution and
just execute
now correctly create empty
directories if they are part of the action's input. - Fixed overwrite of existing symlinks in the output directory
when using subcommandsinstall
andinstall-cas
. - The format for target-cache shards was changed to a canonical form.
The new and old formats do not overlap, therefore the correctness
of the builds is not affected. In particular, no special care has
to be taken on upgrading or downgrading. However, some target-level
cache entries will not be used leading potentially to rebuilding of
some targets. - The expression
"disjoint_map_union"
did not verify disjointness
in all cases; this is fixed now. - The command line option
"--remote-execution-property"
can be
repeated multiple times to list all the properties, but only the
last one was retained. This is fixed now.
v1.3.0-beta1-1714645780
Merge branch 'just-buildsystem:master' into github-ci
v1.3.0-alpha-1713521989
Merge branch 'just-buildsystem:master' into github-ci