summaryrefslogtreecommitdiffstats
path: root/Cargo.toml
AgeCommit message (Collapse)Author
2021-10-19Revert "Replace "ptree" with maintenance fork"Matthias Beyer
This reverts commit a73b2d0d04fddbfe69e0872b6856b112ebec6d71. Signed-off-by: Matthias Beyer <mail@beyermatthias.de> (cherry picked from commit b20a799090c19b3c7a18dd276f96cd2a40ac0145)
2021-10-19Update version string to 0.3.0Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-10-19Replace "ptree" with maintenance forkMatthias Beyer
Because ptree 0.3.2 dependends on crates that have security advisories (down the dependency chain), we depend on a fork of ptree now, which updates these dependencies. We hope that this resolves the advisories for us. This patch shall be reverted as soon as ptree 0.4.0 (with updated dependencies) is published. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-09-23Change maintenance level of crateMatthias Beyer
Starting with 0.3.0, this crate will be in maintenance mode. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-09-16Add test: parsing BuildDependencyMatthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-08-31Pin dependency clapMatthias Beyer
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>
2021-08-26Reimplement Repository::load() with parallelismMatthias Beyer
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>
2021-08-26Make sure we open as many files as possible in the recursionMatthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-08-13Update version string to 0.2.0Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-08-12Fix: Do not use wildcard expression in dependenciesMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-07-21env_logger: 0.8 -> 0.9Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-07-21Pin transitive dependency "zeroize"Matthias Beyer
dialoguer depends on zeroize, which broke their public interface in 1.4.0 by updating the minimum required rust version to 1.51.0. Because we have 1.50.0, this does not work anymore. Because dialoguer depends on zeroize "1.1.1", we can pin zeroize to 1.3 in our dependencies, to force the build to not use the 1.4.* release (or newer) of zeroize. This is of course not a long-term solution. The proper fix is to update our MSRV, but I do not want to do that right before our 0.2.0 release. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-16Update handlebars: 4 -> >=4.0.1Matthias Beyer
Because the 4.0.0 contained a bug which was fixed (by us!) in https://github.com/sunng87/handlebars-rust/pull/445 we must use 4.0.1 as minimum version requirement. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-15Update dependency: handlebars: 3 -> 4Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-09Merge branch 'config-only-toml'Matthias Beyer
2021-06-09Revert "Update dependency: handlebars: 3 -> 4"Matthias Beyer
Because the update broke interpolation of the "patches" variable from the package definitions (and possibly others), we revert the update for now until we figured out what is actually wrong here. This reverts commit 3cb481417b13c5664bb4157d932b8ad4df5cb66d. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-09The config crate should only support toml as backendMatthias Beyer
This should reduce our dependencies by a certain number. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-06-08Update dependency: semver: 0.11 -> 1.0Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-08Update dependency: parse-display: 0.4 -> 0.5Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-06-08Update dependency: handlebars: 3 -> 4Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-05-20Update dependency: indicatif 0.15 -> 0.16.1Matthias Beyer
0.16.1 has been published which fixes the bug introduced by 0.16.0, hence update this dependency. This reverts commit ddbd9629b3188c9f08d023829683c40ab9e1448b. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-05-17Revert "Update dependency: indicatif 0.15 -> 0.16"Matthias Beyer
This reverts the dependency update because indicatif 0.16 introduced a reachable `unreachable!()` statement in their sourcecode that we actually hit if we `--hide-bars`. This reverts commit 6ceccb679d9c2d19389c6c6eef792d8db9086f31. Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-05-17Add "db setup" subcommandMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-05-12Revert "Add automatic pager setup"Matthias Beyer
The automatic pager setup resulted in more confusion in using the CLI than in benefit. Hence, remove this feature again. This reverts commit b5a3f02a05311d5f5a4eb35b8d2513cb6a543560. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-05-11Merge branch 'update-deps'Matthias Beyer
2021-05-11Update dependency: indicatif 0.15 -> 0.16Matthias Beyer
Because the interfaces of indicatif have changed, this PR changes a lot of calls in the codebase. (Yay, moving all the things!) Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-05-11Merge branch 'auto-pager'Matthias Beyer
2021-05-10Add automatic pager setupMatthias Beyer
This patch adds automatic pager setup in some of the subcommand implementations. The "build" subcommand is explicitely not added here. The setup is also done in a helper function to be able to alter the setup in one place. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-05-10Add human-panic setupMatthias Beyer
This patch adds a human-panic so that we get nice bug reports if an user experiences a crash of butido. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-04-19Update dependency: diesel 1.4 -> 1.4.6Matthias Beyer
See also: https://rustsec.org/advisories/RUSTSEC-2021-0037.html https://github.com/diesel-rs/diesel/pull/2663 Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-04-19Update dependency: tar 0.4 -> 0.4.16Matthias Beyer
See: https://rustsec.org/advisories/RUSTSEC-2018-0002.html https://github.com/alexcrichton/tar-rs/pull/156 Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-04-12Use aquamarine 0.1 branchMike Lubients
Aquamarine has been updated to support offline mode in 0.1.8, and doesn't require internet connection to build and view the rendered diagrams anymore. This change switches from pinned patch version to a the 0.1 branch in order to include the offline more feature and other backward-compatible improvements coming in future Signed-off-by: mersinvald <me@mkl.dev> Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-17Add crate metadataMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-17Update config: own fork -> 0.11Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-16Update dialoguer: 0.7 -> 0.8Matthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-13Switch from sha1 to sha-1Matthias Beyer
This is because the "sha1" crate seems to be unmaintained (no release in 3 years) but the sha-1 crate seems to be actively maintained in the context of a bigger rust-crypto-functions project. Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Tested-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-11Add xdg-based config file mergingMatthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-10Merge branch 'pathes-to-absolute'Matthias Beyer
2021-03-10Merge branch 'update-deps'Matthias Beyer
2021-03-10Re-write patch postprocessingMatthias Beyer
This patch rewrites patch post-processing with a new setter in the config-rs crate: Config::set_once() That is introduced on a PR I've written for the crate. The PR: https://github.com/mehcode/config-rs/pull/172 The new function is more likely to land on the config-rs master branch than the old one, as it does not introduce more exported types from the config-rs crate. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-09Implement patch-path rewritingMatthias Beyer
This patch ensures that pathes for patches are always relative to the repository root, when loading the packages layered from the repository. The problem is well described in the comment in the code, so this commit message ends here. This patch was written using an proposed feature for the config-rs dependency: https://github.com/mehcode/config-rs/pull/165 This PR added a `Config::get_value_mut()` function and exported the `config::value::ValueKind` type in config-rs public API. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net> Tested-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-07Add filters for listing containers on endpointsMatthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-07Use the bytesize crate to format size of memory nicelyMatthias Beyer
Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-07result-inspect: 0.1 -> 0.2Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-03-05Enable tokio feature "time"Matthias Beyer
We need the "time" feature in tokio, because we want to implement pinging with a wait time between the pings. Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-03-01Implement "release rm" subcommandMatthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-02-21Update typed-builder: 0.8 -> 0.9Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-02-21Update shiplift: git -> 0.7Matthias Beyer
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
2021-02-15Force "funty" to 1.1.0Matthias Beyer
This forces the transitive dependency of "bitvec", named "funty", to 1.1.0. Rationale: https://github.com/bitvecto-rs/bitvec/issues/105#issuecomment-778570981 Signed-off-by: Matthias Beyer <matthias.beyer@atos.net>
2021-02-06Rewrite package organizational structure using DAGMatthias Beyer
This patch reimplements the package orchestration functionality to rely on a DAG rather than a tree. A / \ B E / \ \ C D F Before this change, the structure the packages were organized in for a build was a tree. That did work reasonable well for initial development of butido, because this is a simple case and the implementation is rather simple, too. But, packages and their dependencies are not always organized in a tree. Most of the time, they are organized in a DAG: .-> C -, / \ D > A \ / `-> B -ยด This is a real-world example: A could be a common crypto-library that I do not want to name here. B and C could be libraries that use the said crypto-library and D could be a program that use B and C. Because said crypto-library builds rather long, building it twice and throwing one result away is a no-go. A DAG as organizational structure makes that issue go away entirely. Also, we can later implement checks whether the DAG contains multiple versions of the same library, if that is undesireable. The change itself is rather big, frankly because it is a non-trivial change the replace the whole data structure and its handling in the orchestrator code. First of all, we introduce the "daggy" library, which provides the DAG implementation on top of the popular "petgraph" library. The package `Tree` datastructure was replaced by a package `Dag` datastructure. This type implements the heavy-lifting that is needed to load a package and all its dependencies from the `Repository` object. The `JobTree` was also reimplemented, but as `daggy::Dag` provides a convenient `map()` function, its implementation which transforms the package `Dag` into a job `Dag` is rather trivial. `crate::job::Dag` then provides the convenience `iter()` function to iterate over all elements in the DAG and providing a `JobDefinition` object for each node. The topology in which we traverse the DAG is not an issue, as we need to create tasks for all `JobDefinition`s anyways, so we do not care about traversal topology at all. The `crate::package::Package` type got an `Hash` implementation, which is necessary to keep track of the mappings while reading the DAG from the repository. The implementation does not create the edges between the nodes in the DAG right when inserting, but afterwards. To keep track of the `daggy::NodeIndex`es, it keeps a mapping Package -> NodeIndex in a Hashmap. Thus, `Package` must implement `std::hash::Hash` Signed-off-by: Matthias Beyer <mail@beyermatthias.de> Tested-by: Matthias Beyer <mail@beyermatthias.de> squash! Reimplement as DAG