From dead42dc25272fca734b630b4bee4661934e4fa8 Mon Sep 17 00:00:00 2001 From: Martin Wimpress Date: Sun, 25 Jan 2026 14:11:38 +0000 Subject: [PATCH] fix(nix): avoid CI stack overflow by using builtins.split - Replace builtins.match with builtins.split for version extraction - Previous regex with .* patterns caused catastrophic backtracking on large files (~2800 lines) - builtins.split avoids full-string regex matching and is more efficient Fixes: Nix build CI failure --- package.nix | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/package.nix b/package.nix index 9872827..f511020 100644 --- a/package.nix +++ b/package.nix @@ -60,15 +60,16 @@ let usbutils xdg-user-dirs ]; - versionMatches = builtins.match '' - .* - readonly[[:blank:]]VERSION="([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)" - .* - '' (builtins.readFile ./quickemu); + # Extract version using builtins.split to avoid regex backtracking on large files. + # builtins.match with .* patterns on multi-kilobyte files can cause stack overflow. + versionParts = builtins.split "readonly VERSION=\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" ( + builtins.readFile ./quickemu + ); + version = builtins.elemAt (builtins.elemAt versionParts 1) 0; in stdenv.mkDerivation (finalAttrs: { pname = "quickemu"; - version = builtins.concatStringsSep "" versionMatches; + version = version; src = lib.cleanSource ./.; postPatch = ''