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
This commit is contained in:
parent
dd39102ef9
commit
dead42dc25
13
package.nix
13
package.nix
|
|
@ -60,15 +60,16 @@ let
|
||||||
usbutils
|
usbutils
|
||||||
xdg-user-dirs
|
xdg-user-dirs
|
||||||
];
|
];
|
||||||
versionMatches = builtins.match ''
|
# Extract version using builtins.split to avoid regex backtracking on large files.
|
||||||
.*
|
# builtins.match with .* patterns on multi-kilobyte files can cause stack overflow.
|
||||||
readonly[[:blank:]]VERSION="([[:digit:]]+\.[[:digit:]]+\.[[:digit:]]+)"
|
versionParts = builtins.split "readonly VERSION=\"([0-9]+\\.[0-9]+\\.[0-9]+)\"" (
|
||||||
.*
|
builtins.readFile ./quickemu
|
||||||
'' (builtins.readFile ./quickemu);
|
);
|
||||||
|
version = builtins.elemAt (builtins.elemAt versionParts 1) 0;
|
||||||
in
|
in
|
||||||
stdenv.mkDerivation (finalAttrs: {
|
stdenv.mkDerivation (finalAttrs: {
|
||||||
pname = "quickemu";
|
pname = "quickemu";
|
||||||
version = builtins.concatStringsSep "" versionMatches;
|
version = version;
|
||||||
src = lib.cleanSource ./.;
|
src = lib.cleanSource ./.;
|
||||||
|
|
||||||
postPatch = ''
|
postPatch = ''
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue