diff --git a/scripts/generate-patches.pl.in b/scripts/generate-patches.pl.in index 3be30be00b..05bf650939 100755 --- a/scripts/generate-patches.pl.in +++ b/scripts/generate-patches.pl.in @@ -228,6 +228,13 @@ foreach my $p (keys %dstOutPaths) { if ($name eq $name2) { + my $srcSystem = @{$dstNarFiles{$p}}[0]->{system}; + my $dstSystem = @{$srcNarFiles{$q}}[0]->{system}; + if (defined $srcSystem && defined $dstSystem && $srcSystem ne $dstSystem) { + print " SKIPPING $q due to different systems ($srcSystem vs. $dstSystem)\n"; + next; + } + # If the sizes differ too much, then skip. This # disambiguates between, e.g., a real component and a # wrapper component (cf. Firefox in Nixpkgs). @@ -238,7 +245,7 @@ foreach my $p (keys %dstOutPaths) { # print " SIZE $srcSize $dstSize $ratio $q\n"; if ($ratio >= 3) { - print " SKIPPING $q due to size ratio $ratio ($srcSize $dstSize)\n"; + print " SKIPPING $q due to size ratio $ratio ($srcSize vs. $dstSize)\n"; next; } diff --git a/scripts/readmanifest.pm.in b/scripts/readmanifest.pm.in index c2c4be89b2..82a01e5ab7 100644 --- a/scripts/readmanifest.pm.in +++ b/scripts/readmanifest.pm.in @@ -34,7 +34,7 @@ sub readManifest { my $manifestVersion = 2; my ($storePath, $url, $hash, $size, $basePath, $baseHash, $patchType); - my ($narHash, $narSize, $references, $deriver, $hashAlgo, $copyFrom); + my ($narHash, $narSize, $references, $deriver, $hashAlgo, $copyFrom, $system); while () { chomp; @@ -56,6 +56,7 @@ sub readManifest { undef $basePath; undef $baseHash; undef $patchType; + undef $system; $references = ""; $deriver = ""; $hashAlgo = "md5"; @@ -83,6 +84,7 @@ sub readManifest { , narHash => $narHash, narSize => $narSize , references => $references , deriver => $deriver, hashAlgo => $hashAlgo + , system => $system }; } @@ -128,6 +130,7 @@ sub readManifest { elsif (/^\s*References:\s*(.*)\s*$/) { $references = $1; } elsif (/^\s*Deriver:\s*(\S+)\s*$/) { $deriver = $1; } elsif (/^\s*ManifestVersion:\s*(\d+)\s*$/) { $manifestVersion = $1; } + elsif (/^\s*System:\s*(\S+)\s*$/) { $system = $1; } # Compatibility; elsif (/^\s*NarURL:\s*(\S+)\s*$/) { $url = $1; } @@ -165,6 +168,7 @@ sub writeManifest { if defined $narFile->{references} && $narFile->{references} ne ""; print MANIFEST " Deriver: $narFile->{deriver}\n" if defined $narFile->{deriver} && $narFile->{deriver} ne ""; + print MANIFEST " System: $narFile->{system}\n" if defined $narFile->{system}; print MANIFEST "}\n"; } }