Age | Commit message (Collapse) | Author |
|
This patch adds parameters for the tree-of subcommand which can be used to
change the package-DAG-building based on conditional requirements.
If a package has a dependency-condition that only includes a dependency if there
is a certain image used to build, the "image" parameter can be used to inspect
the package tree (DAG) build with that image in mind.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch extends the interface for building the package DAG with a parameter
for the data that is required to check conditions for conditional dependencies.
A "DTO" type is added for this data.
The actual condition-checking is not implemented in this patch.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch adds a conditional dependency variant to the build/runtime dependency
deserialization type(s).
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch adds the first implementation for conditional dependencies in the
dependency fields (that is the "build" and "runtime" keys in the package
defintion).
This is only the deserialization-interface, not the actual condition resolving
code.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch reimplements the Dependency type as an enum.
This is required because later we want to be able to use an "if" expression in
the build dependencies, for example (not decided yet) something like
runtime = [
{
d = "libfoobar",
if = [ { has_env = [ "TARGET_RH7" ]; } ]
}
]
(no valid toml here, formatting for readability)
to make a dependency optional on a condition.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch reimplements the BuildDependency type as an enum.
This is required because later we want to be able to use an "if" expression in
the build dependencies, for example (not decided yet) something like
build = [
{
d = "libfoobar",
if = [ { has_env = [ "TARGET_RH7" ]; } ]
}
]
(no valid toml here, formatting for readability)
to make a dependency optional on a condition.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This is not perfect, of course, as we rather should check the load on the host
rather than some artificial number of running containers (more failed jobs
result in more running containers, which results in more scheduled to the host),
but still, this is an improvement over the previous state because utilization
did not express enough.
So the issue was that the utilization only represents the utilization of an
endpoint _from the current process_.
If butido is called three times, the same host was selected for a job because
the utilization in each butido process resulted in the same values for this
endpoint.
In practice, this resulted in a build for "gcc" to be scheduled to the same
host when butido was executed three times for "gcc" (e.g. for different
platforms).
The endresult was a load of ~70 on a host where 24 was "100% load".
This is not ideal. Checking the load of a host is not possible via the docker
API, so this is what I came up with. Now, builds are scheduled to endpoints
which have fewer running containers.
This might not result in a perfect distribution (or even a "good" one), but
still it might result in a better distribution of workload than in before this
patch.
Some completely non-artificial testing resulted in the expected behaviour.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
|
|
|
|
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Because we didn't pin the dependency in Cargo.toml, a `cargo update` or fresh
build resulted in beta.4 being used and fails because a new feature was
introduced in newer compilers.
Hence, pin the clap version to exactly this version for now.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
(cherry picked from commit 414fc4ff1f0aac20867728634af44ea92ea72b10)
|
|
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This fixes a missed unimplemented!() in the codebase.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This fixes the relative pathes for the patch files by not joining it with the
root directory path.
The exists-check was removed, because the filtering before that already does
that.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
After some completely non-scientific benchmarking, these patches bring down the
loading time for a real-world repository from over 20 sec to about 17 sec on
debug build of butido and to 5 sec in release build and even to 2 sec after the
filesystem cache got a bit warm.
So I guess we can safely merge this now and be happy with it (and go back to the
more important issues).
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
A quick test showed that the parallel approach here reduced the loading time by
approx 10%.
Not good, but better than before.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
Tested-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Because the filter_entry() method is expected for the recursion to happen, we
should not filter out directories here (except hidden ones).
Rather filter them out later in the process.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Because we need that to find the patches the file may reference.
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|