Skip to content

Commit 7d1f0a4

Browse files
committed
tests.nixpkgs-check-by-name: Allow new package variants
1 parent 46da6c5 commit 7d1f0a4

File tree

8 files changed

+35
-1
lines changed

8 files changed

+35
-1
lines changed

pkgs/test/nixpkgs-check-by-name/src/eval.rs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use crate::nixpkgs_problem::NixpkgsProblem;
22
use crate::ratchet;
33
use crate::structure;
4+
use crate::utils;
45
use crate::validation::ResultIteratorExt;
56
use crate::validation::{self, Validation::Success};
67
use crate::NixFileCache;
@@ -223,7 +224,27 @@ pub fn check_values(
223224
nixpkgs_path,
224225
)? {
225226
None => Success(NonApplicable),
226-
Some(call_package_argument_info) => Success(Loose(call_package_argument_info))
227+
Some(call_package_argument_info) => {
228+
if let Some(ref rel_path) = call_package_argument_info.relative_path {
229+
if rel_path.starts_with(utils::BASE_SUBPATH) {
230+
// Package variants of by-name packages are explicitly allowed according to RFC 140
231+
// https://github.com/NixOS/rfcs/blob/master/rfcs/0140-simple-package-paths.md#package-variants:
232+
//
233+
// foo-variant = callPackage ../by-name/fo/foo/package.nix {
234+
// someFlag = true;
235+
// }
236+
//
237+
// While such definitions could be moved to `pkgs/by-name` by using
238+
// `.override { someFlag = true; }` instead, this changes the semantics in
239+
// relation with overlays.
240+
Success(NonApplicable)
241+
} else {
242+
Success(Loose(call_package_argument_info))
243+
}
244+
} else {
245+
Success(Loose(call_package_argument_info))
246+
}
247+
},
227248
},
228249
},
229250
};
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
self: super: {
2+
foo-variant-unvarianted = self.callPackage ./package.nix { };
3+
4+
foo-variant-new = self.callPackage ./pkgs/by-name/fo/foo/package.nix { };
5+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
self: super: {
2+
foo-variant-unvarianted = self.callPackage ./pkgs/by-name/fo/foo/package.nix { };
3+
}
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import <test-nixpkgs> { root = ./.; }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ someDrv }: someDrv
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
import <test-nixpkgs> { root = ./.; }
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ someDrv }: someDrv
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{ someDrv }: someDrv

0 commit comments

Comments
 (0)