diff options
author | Quentin Dufour <quentin@deuxfleurs.fr> | 2022-03-24 10:28:53 +0100 |
---|---|---|
committer | Quentin Dufour <quentin@deuxfleurs.fr> | 2022-03-24 10:28:53 +0100 |
commit | 62a45747a5a85f0255648f0514416a24e97b7bdb (patch) | |
tree | 76c5f2a198c6655dc3fe3a3962a91a477a5e44b8 | |
parent | 4fc6a2ef554ec5e69522905ca4c18d2a39d22051 (diff) | |
download | garage-ci/feature-flag.tar.gz garage-ci/feature-flag.zip |
Compile kuberetes-discovery only when release=trueci/feature-flag
-rw-r--r-- | default.nix | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/default.nix b/default.nix index 053176f7..21a413b2 100644 --- a/default.nix +++ b/default.nix @@ -47,6 +47,13 @@ in let ]; }; + /* + Cargo2nix provides many overrides by default, you can take inspiration from them: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/overrides.nix + + You can have a complete list of the available options by looking at the overriden object, mkcrate: + https://github.com/cargo2nix/cargo2nix/blob/master/overlay/mkcrate.nix + */ overrides = pkgs.rustBuilder.overrides.all ++ [ /* [1] We need to alter Nix hardening to be able to statically compile: PIE, @@ -73,6 +80,21 @@ in let ''; } else {}); }) + + /* + We ship some parts of the code disabled by default by putting them behind a flag. + It speeds up the compilation (when the feature is not required) and released crates have less dependency by default (less attack surface, disk space, etc.). + But we want to ship these additional features when we release Garage. + In the end, we chose to exclude all features from debug builds while putting (all of) them in the release builds. + Currently, the only feature of Garage is kubernetes-discovery from the garage_rpc crate. + */ + (pkgs.rustBuilder.rustLib.makeOverride { + name = "garage_rpc"; + overrideArgs = old: + { + features = if release then [ "kubernetes-discovery" ] else []; + }; + }) ]; packageFun = import ./Cargo.nix; |