aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorThéophane Hufschmitt <theophane.hufschmitt@tweag.io>2023-05-12 09:56:39 +0200
committerThéophane Hufschmitt <theophane.hufschmitt@tweag.io>2023-08-07 16:53:37 +0200
commitad410abbe0d66a72927bd715af355d88a4e939d9 (patch)
tree513619cd48299e5acb5c0f27a1bd109796c1818b
parent5df0f1755f36c2dbee29e5e434e1adc138601d5f (diff)
Stabilize `discard-references`
It has been there for a few releases now (landed in 2.14.0), doesn't seem to cause any major issue and is wanted in a few places (https://github.com/NixOS/nix/pull/7087#issuecomment-1544471346).
-rw-r--r--doc/manual/src/language/advanced-attributes.md10
-rw-r--r--doc/manual/src/release-notes/rl-next.md6
-rw-r--r--src/libstore/build/local-derivation-goal.cc1
-rw-r--r--src/libutil/experimental-features.cc11
-rw-r--r--src/libutil/experimental-features.hh1
-rw-r--r--tests/check-refs.sh6
6 files changed, 11 insertions, 24 deletions
diff --git a/doc/manual/src/language/advanced-attributes.md b/doc/manual/src/language/advanced-attributes.md
index 307971434..5e8aaeba0 100644
--- a/doc/manual/src/language/advanced-attributes.md
+++ b/doc/manual/src/language/advanced-attributes.md
@@ -320,16 +320,6 @@ Derivations can declare some infrequently used optional attributes.
```
- [`unsafeDiscardReferences`]{#adv-attr-unsafeDiscardReferences}\
- > **Warning**
- > This attribute is part of an [experimental feature](@docroot@/contributing/experimental-features.md).
- >
- > To use this attribute, you must enable the
- > [`discard-references`](@docroot@/contributing/experimental-features.md#xp-feature-discard-references) experimental feature.
- > For example, in [nix.conf](../command-ref/conf-file.md) you could add:
- >
- > ```
- > extra-experimental-features = discard-references
- > ```
When using [structured attributes](#adv-attr-structuredAttrs), the
attribute `unsafeDiscardReferences` is an attribute set with a boolean value for each output name.
diff --git a/doc/manual/src/release-notes/rl-next.md b/doc/manual/src/release-notes/rl-next.md
index 526b64fde..6516a2663 100644
--- a/doc/manual/src/release-notes/rl-next.md
+++ b/doc/manual/src/release-notes/rl-next.md
@@ -10,3 +10,9 @@
- [`builtins.toJSON`](@docroot@/language/builtins.md#builtins-parseFlakeRef) now prints [--show-trace](@docroot@/command-ref/conf-file.html#conf-show-trace) items for the path in which it finds an evaluation error.
- Error messages regarding malformed input to [`derivation add`](@docroot@/command-ref/new-cli/nix3-derivation-add.md) are now clearer and more detailed.
+
+- The `discard-references` feature has been stabilized.
+ This means that the
+ [unsafeDiscardReferences](@docroot@/contributing/experimental-features.md#xp-feature-discard-references)
+ attribute is no longer guarded by an experimental flag and can be used
+ freely.
diff --git a/src/libstore/build/local-derivation-goal.cc b/src/libstore/build/local-derivation-goal.cc
index b7a27490c..8b7fbdcda 100644
--- a/src/libstore/build/local-derivation-goal.cc
+++ b/src/libstore/build/local-derivation-goal.cc
@@ -2307,7 +2307,6 @@ SingleDrvOutputs LocalDerivationGoal::registerOutputs()
bool discardReferences = false;
if (auto structuredAttrs = parsedDrv->getStructuredAttrs()) {
if (auto udr = get(*structuredAttrs, "unsafeDiscardReferences")) {
- experimentalFeatureSettings.require(Xp::DiscardReferences);
if (auto output = get(*udr, outputName)) {
if (!output->is_boolean())
throw Error("attribute 'unsafeDiscardReferences.\"%s\"' of derivation '%s' must be a Boolean", outputName, drvPath.to_string());
diff --git a/src/libutil/experimental-features.cc b/src/libutil/experimental-features.cc
index 7c4112d32..782331283 100644
--- a/src/libutil/experimental-features.cc
+++ b/src/libutil/experimental-features.cc
@@ -12,7 +12,7 @@ struct ExperimentalFeatureDetails
std::string_view description;
};
-constexpr std::array<ExperimentalFeatureDetails, 15> xpFeatureDetails = {{
+constexpr std::array<ExperimentalFeatureDetails, 14> xpFeatureDetails = {{
{
.tag = Xp::CaDerivations,
.name = "ca-derivations",
@@ -183,15 +183,6 @@ constexpr std::array<ExperimentalFeatureDetails, 15> xpFeatureDetails = {{
)",
},
{
- .tag = Xp::DiscardReferences,
- .name = "discard-references",
- .description = R"(
- Allow the use of the [`unsafeDiscardReferences`](@docroot@/language/advanced-attributes.html#adv-attr-unsafeDiscardReferences) attribute in derivations
- that use [structured attributes](@docroot@/language/advanced-attributes.html#adv-attr-structuredAttrs). This disables scanning of outputs for
- runtime dependencies.
- )",
- },
- {
.tag = Xp::DaemonTrustOverride,
.name = "daemon-trust-override",
.description = R"(
diff --git a/src/libutil/experimental-features.hh b/src/libutil/experimental-features.hh
index faf2e9398..add592ae6 100644
--- a/src/libutil/experimental-features.hh
+++ b/src/libutil/experimental-features.hh
@@ -27,7 +27,6 @@ enum struct ExperimentalFeature
ReplFlake,
AutoAllocateUids,
Cgroups,
- DiscardReferences,
DaemonTrustOverride,
DynamicDerivations,
ParseTomlTimestamps,
diff --git a/tests/check-refs.sh b/tests/check-refs.sh
index 2778e491d..3b587d1e5 100644
--- a/tests/check-refs.sh
+++ b/tests/check-refs.sh
@@ -42,8 +42,10 @@ nix-build -o $RESULT check-refs.nix -A test7
nix-build -o $RESULT check-refs.nix -A test10
if isDaemonNewer 2.12pre20230103; then
- enableFeatures discard-references
- restartDaemon
+ if ! isDaemonNewer 2.16.0; then
+ enableFeatures discard-references
+ restartDaemon
+ fi
# test11 should succeed.
test11=$(nix-build -o $RESULT check-refs.nix -A test11)