aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorQuentin Dufour <quentin@deuxfleurs.fr>2022-03-24 10:28:53 +0100
committerQuentin Dufour <quentin@deuxfleurs.fr>2022-03-24 10:28:53 +0100
commit62a45747a5a85f0255648f0514416a24e97b7bdb (patch)
tree76c5f2a198c6655dc3fe3a3962a91a477a5e44b8
parent4fc6a2ef554ec5e69522905ca4c18d2a39d22051 (diff)
downloadgarage-ci/feature-flag.tar.gz
garage-ci/feature-flag.zip
Compile kuberetes-discovery only when release=trueci/feature-flag
-rw-r--r--default.nix22
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;