git.iko.soy/typeable/nixpkgs
on master help sign in
Merge pull request #144014 from hercules-ci/fix-nixosTest-infinite-recursion

nixosTest: Fix infinite recursion involving hasContext testScript whe…

commit3028246ac08c7f3a8d564d8141e436c6635e5a94 authorRobert Hensing <roberth@users.noreply.github.com> dateSun 31 Oct 2021, 18:49 (5 years ago) parent50f457156c4f9d
1 file changed+12−1
nixos/lib/testing-python.nix+12−1
nixos/lib/testing-python.nix+12−1
@@ -218,6 +218,7 @@ rec {
218218 build-vms = import ./build-vms.nix {
219219 inherit system lib pkgs minimal specialArgs;
220220 extraConfigurations = extraConfigurations ++ [(
221+ { config, ... }:
221222 {
222223 virtualisation.qemu.package = qemu_pkg;
223224
@@ -230,7 +231,17 @@ rec {
230231 # copied to the image.
231232 virtualisation.additionalPaths =
232233 lib.optional
233− (builtins.hasContext testScript')
234+ # A testScript may evaluate nodes, which has caused
235+ # infinite recursions. The demand cycle involves:
236+ # testScript -->
237+ # nodes -->
238+ # toplevel -->
239+ # additionalPaths -->
240+ # hasContext testScript' -->
241+ # testScript (ad infinitum)
242+ # If we don't need to build an image, we can break this
243+ # cycle by short-circuiting when useNixStoreImage is false.
244+ (config.virtualisation.useNixStoreImage && builtins.hasContext testScript')
234245 (pkgs.writeStringReferencesToFile testScript');
235246
236247 # Ensure we do not use aliases. Ideally this is only set