diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3a14b91d5de..b4d3fc5df93 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -77,7 +77,7 @@ jobs: matrix: # build: [ linux, linux-arm, macos, win-msvc, win-gnu, win32-msvc ] build: [ linux, macos, win-msvc, win-gnu, win32-msvc ] - feature: [ "small", "lean", "max" ] + feature: [ "small", "lean", "max", "max-pure" ] include: - build: linux os: ubuntu-18.04 diff --git a/Cargo.toml b/Cargo.toml index 96d97d69f16..579702a4261 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -52,10 +52,13 @@ lean = ["fast", "pretty-cli", "http-client-curl", "gitoxide-core-tools", "gitoxi ## It uses, however, a fully asynchronous networking implementation which can serve a real-world example on how to implement custom async transports. lean-async = ["fast", "pretty-cli", "gitoxide-core-tools", "gitoxide-core-async-client", "prodash-render-line"] -## As small as it can possibly be, no threading, no fast sha1, log based progress only, rust based zlib implementation. +## As small as it can possibly be, no threading, no fast sha1, line progress only, rust based zlib implementation. ## no networking, local operations only. small = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "atty" ] +## Makes the crate execute as fast as possible without pulling in C libraries, while keeping everything else minimal akin to the `small` build. +max-pure = ["pretty-cli", "git-features/rustsha1", "git-features/zlib-rust-backend", "prodash-render-line", "prodash-render-tui", "git-repository/max-performance-safe", "http-client-curl", "gitoxide-core-blocking-client", "gitoxide-core-tools", "prodash/render-line-autoconfigure" ] + #! ### `gitoxide-core` Configuration ## A way to enable all `gitoxide-core` tools found in `gix tools` diff --git a/Makefile b/Makefile index 0e5b66af150..a75974b41b8 100644 --- a/Makefile +++ b/Makefile @@ -51,6 +51,7 @@ doc: ## Run cargo doc on all crates clippy: ## Run cargo clippy on all crates cargo clippy --all --tests --examples cargo clippy --all --no-default-features --features small + cargo clippy --all --no-default-features --features max-pure cargo clippy --all --no-default-features --features lean-async --tests check-msrv: ## run cargo msrv to validate the current msrv requirements, similar to what CI does @@ -171,12 +172,14 @@ continuous-unit-tests: ## run all unit tests whenever something changes watchexec -w src $(MAKE) unit-tests jtt = target/debug/jtt -journey-tests: always ## run journey tests (max) +journey-tests: always ## run journey tests (max + pure) cargo build cargo build --package git-testtools --bin jtt ./tests/journey.sh target/debug/ein target/debug/gix $(jtt) max + cargo build --no-default-features --features max-pure + ./tests/journey.sh target/debug/ein target/debug/gix $(jtt) max -journey-tests-small: always ## run journey tests (lean-cli) +journey-tests-small: always ## run journey tests (small) cargo build --no-default-features --features small cd tests/tools && cargo build ./tests/journey.sh target/debug/ein target/debug/gix $(jtt) small diff --git a/README.md b/README.md index a9e28e8ac33..3bc94ed27b7 100644 --- a/README.md +++ b/README.md @@ -220,7 +220,7 @@ cargo install --git https://github.com/Byron/gitoxide gitoxide #### How to deal with build failures On some platforms, installation may fail due to lack of tools required by `C` toolchains. This can generally be avoided by installation -with `cargo install gitoxide --no-default-features --features small`. +with `cargo install gitoxide --no-default-features --features max-pure`. What follows is a list of known failures.