about summary refs log tree commit diff
diff options
context:
space:
mode:
-rwxr-xr-xscripts/generate-patches.pl18
1 files changed, 12 insertions, 6 deletions
diff --git a/scripts/generate-patches.pl b/scripts/generate-patches.pl
index 7d957839bb24..b20360fc6e3d 100755
--- a/scripts/generate-patches.pl
+++ b/scripts/generate-patches.pl
@@ -191,13 +191,19 @@ foreach my $p (keys %dstOutPaths) {
         my $narHash = `nix-hash --flat $tmpdir/B` or die;
         chomp $narHash;
 
-        my $narBz2Hash = `nix-hash --flat $tmpdir/DIFF` or die;
-        chomp $narBz2Hash;
+        my $narDiffHash = `nix-hash --flat $tmpdir/DIFF` or die;
+        chomp $narDiffHash;
 
-        my $narBz2Size = (stat "$tmpdir/DIFF")[7];
+        my $narDiffSize = (stat "$tmpdir/DIFF")[7];
+        my $dstNarBz2Size = (stat $dstNarBz2)[7];
+
+        if ($narDiffSize >= $dstNarBz2Size) {
+            print "    rejecting; patch bigger than full archive\n";
+            next;
+        }
     
         my $finalName =
-            "$narBz2Hash-$name-$closestVersion-to-$version.nar-diff";
+            "$narDiffHash-$name-$closestVersion-to-$version.nar-diff";
 
         if (-e "$patchesDir/$finalName") {
             print "    not copying, already exists\n";
@@ -212,8 +218,8 @@ foreach my $p (keys %dstOutPaths) {
         
         # Add the patch to the manifest.
         addPatch \%dstPatches, $p,
-            { url => "$patchesURL/$finalName", hash => $narBz2Hash
-            , size => $narBz2Size
+            { url => "$patchesURL/$finalName", hash => $narDiffHash
+            , size => $narDiffSize
             , basePath => $closest, baseHash => $baseHash
             , narHash => $narHash, patchType => "nar-bsdiff"
             };