* Add a version number to manifests.

This commit is contained in:
Eelco Dolstra 2005-02-25 16:12:52 +00:00
parent 8d3c346559
commit 8376fff151
3 changed files with 16 additions and 2 deletions

View file

@ -27,7 +27,10 @@ my %successors;
for my $manifest (glob "$manifestDir/*.nixmanifest") { for my $manifest (glob "$manifestDir/*.nixmanifest") {
# print STDERR "reading $manifest\n"; # print STDERR "reading $manifest\n";
readManifest $manifest, \%narFiles, \%patches, \%successors; if (readManifest($manifest, \%narFiles, \%patches, \%successors) < 3) {
print STDERR "you have an old-style manifest `$manifest'; please delete it\n";
exit 1;
}
} }

View file

@ -42,7 +42,9 @@ sub processURL {
"'$url' > '$manifest'") == 0 "'$url' > '$manifest'") == 0
or die "curl failed: $?"; or die "curl failed: $?";
readManifest $manifest, \%narFiles, \%patches, \%successors; if (readManifest($manifest, \%narFiles, \%patches, \%successors) < 3) {
die "manifest `$url' is too old (i.e., for Nix <= 0.7)\n";
}
my $baseName = "unnamed"; my $baseName = "unnamed";
if ($url =~ /\/([^\/]+)\/[^\/]+$/) { # get the forelast component if ($url =~ /\/([^\/]+)\/[^\/]+$/) { # get the forelast component

View file

@ -41,6 +41,8 @@ sub readManifest {
my $inside = 0; my $inside = 0;
my $type; my $type;
my $manifestVersion = 2;
my $storePath; my $storePath;
my $url; my $url;
my $hash; my $hash;
@ -139,6 +141,7 @@ sub readManifest {
elsif (/^\s*NarHash:\s*(\S+)\s*$/) { $narHash = $1; } elsif (/^\s*NarHash:\s*(\S+)\s*$/) { $narHash = $1; }
elsif (/^\s*References:\s*(.*)\s*$/) { $references = $1; } elsif (/^\s*References:\s*(.*)\s*$/) { $references = $1; }
elsif (/^\s*Deriver:\s*(\S+)\s*$/) { $deriver = $1; } elsif (/^\s*Deriver:\s*(\S+)\s*$/) { $deriver = $1; }
elsif (/^\s*ManifestVersion:\s*(\d+)\s*$/) { $manifestVersion = $1; }
# Compatibility; # Compatibility;
elsif (/^\s*NarURL:\s*(\S+)\s*$/) { $url = $1; } elsif (/^\s*NarURL:\s*(\S+)\s*$/) { $url = $1; }
@ -148,6 +151,8 @@ sub readManifest {
} }
close MANIFEST; close MANIFEST;
return $manifestVersion;
} }
@ -159,6 +164,10 @@ sub writeManifest
open MANIFEST, ">$manifest.tmp"; # !!! check exclusive open MANIFEST, ">$manifest.tmp"; # !!! check exclusive
print MANIFEST "version {\n";
print MANIFEST " ManifestVersion: 3\n";
print MANIFEST "}\n";
foreach my $storePath (keys %{$narFiles}) { foreach my $storePath (keys %{$narFiles}) {
my $narFileList = $$narFiles{$storePath}; my $narFileList = $$narFiles{$storePath};
foreach my $narFile (@{$narFileList}) { foreach my $narFile (@{$narFileList}) {