From ba5f1b4400d3180563fc0822bb529eaf3239875c Mon Sep 17 00:00:00 2001 From: Audrey Dutcher Date: Mon, 27 May 2024 12:27:21 -0700 Subject: [PATCH] freebsd.mkDerivation: process patches generated with git The diff parsing was pretty hardcoded for diff -u. Now it should handle git diff/show as well. --- pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix index be195b3bc6fa..9659f92d17d7 100644 --- a/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix +++ b/pkgs/os-specific/bsd/freebsd/pkgs/mkDerivation.nix @@ -128,15 +128,17 @@ lib.makeOverridable ( splitPatch = patchFile: let + allLines' = lib.strings.splitString "\n" (builtins.readFile patchFile); + allLines = builtins.filter ( + line: !((lib.strings.hasPrefix "diff --git" line) || (lib.strings.hasPrefix "index " line)) + ) allLines'; foldFunc = a: b: - if (lib.strings.hasPrefix "--- " b) then + if ((lib.strings.hasPrefix "--- " b) || (lib.strings.hasPrefix "diff --git " b)) then (a ++ [ [ b ] ]) else ((lib.lists.init a) ++ (lib.lists.singleton ((lib.lists.last a) ++ [ b ]))); - partitionedPatches' = lib.lists.foldl foldFunc [ [ ] ] ( - lib.strings.splitString "\n" (builtins.readFile patchFile) - ); + partitionedPatches' = lib.lists.foldl foldFunc [ [ ] ] allLines; partitionedPatches = if (builtins.length partitionedPatches' > 1) then (lib.lists.drop 1 partitionedPatches')