Age | Commit message (Collapse) | Author |
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
|
|
This patch implements the matching of the condition(s) against the provided
data.
The patch includes tests for all three supported conditions.
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>
|
|
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>
|
|
|
|
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>
|
|
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>
|