Commit 9217ce30 authored by Wayne Davison's avatar Wayne Davison

Revised release-rsync and nightly-rsync code to create a tar files

with the right timestamps.
parent d52607ec
...@@ -29,6 +29,7 @@ our($make_tar, $upload, $help_opt); ...@@ -29,6 +29,7 @@ our($make_tar, $upload, $help_opt);
our $name = time2str('rsync-HEAD-%Y%m%d-%H%M%Z', time, 'GMT'); our $name = time2str('rsync-HEAD-%Y%m%d-%H%M%Z', time, 'GMT');
our $ztoday = time2str('%d %b %Y', time); our $ztoday = time2str('%d %b %Y', time);
our $today = $ztoday; our $today = $ztoday;
our $gen_target = $upload ? 'gensend' : 'gen';
die "$dest does not exist\n" unless -d $dest; die "$dest does not exist\n" unless -d $dest;
die "There is no .git dir in the current directory.\n" unless -d '.git'; die "There is no .git dir in the current directory.\n" unless -d '.git';
...@@ -53,14 +54,13 @@ if ($make_tar) { ...@@ -53,14 +54,13 @@ if ($make_tar) {
} }
} }
close IN; close IN;
map { s#^#$name/# } @extra_files;
print "Creating $name.tar.gz\n"; print "Creating $name.tar.gz\n";
system 'make gen'; system "make $gen_target; rsync -a @extra_files $name/";
symlink('.', $name); system "git archive --format=tar --prefix=$name/ HEAD | tar xf -";
system "git archive --format=tar --prefix=$name/ HEAD >$dest/$name.tar"; system "support/git-set-file-times --prefix=$name/";
system "fakeroot tar rf $dest/$name.tar @extra_files; gzip -9 $dest/$name.tar"; system "fakeroot tar czf $dest/$name.tar.gz $name; rm -rf $name";
unlink($name);
unlink($nightly_symlink); unlink($nightly_symlink);
symlink("$name.tar.gz", $nightly_symlink); symlink("$name.tar.gz", $nightly_symlink);
} }
......
...@@ -161,8 +161,6 @@ foreach my $fn (@tweak_files) { ...@@ -161,8 +161,6 @@ foreach my $fn (@tweak_files) {
close OUT; close OUT;
} }
system 'make gen';
print $break; print $break;
system "git diff --color | less -p '^diff .*'"; system "git diff --color | less -p '^diff .*'";
...@@ -193,15 +191,6 @@ EOT ...@@ -193,15 +191,6 @@ EOT
print "<Press Enter to continue> "; print "<Press Enter to continue> ";
$_ = <STDIN>; $_ = <STDIN>;
@_ = @extra_files;
map { s#^#rsync-$lastversion/# } @_;
$_[0] =~ s/configure\.sh/configure/; # XXX remove soon
system "tar xzf $lasttar_file @_";
rename("rsync-$lastversion", 'a');
rename("a/configure", "a/configure.sh"); # XXX remove soon
system "rsync -a @extra_files rsync-$version/";
system "git commit -a -m 'Preparing for release of $version'" and exit 1; system "git commit -a -m 'Preparing for release of $version'" and exit 1;
system "git tag -s -m 'Version $version.' v$version" and exit 1; system "git tag -s -m 'Version $version.' v$version" and exit 1;
...@@ -245,21 +234,26 @@ if ($diffdir ne $dest) { ...@@ -245,21 +234,26 @@ if ($diffdir ne $dest) {
chdir($curdir) or die $!; chdir($curdir) or die $!;
} }
print "Creating $srctar_file ...\n";
(my $srctar_tmp = $srctar_file) =~ s/\.gz$//;
system "git archive --format=tar --prefix=rsync-$version/ v$version >$srctar_tmp";
system "fakeroot tar rf $srctar_tmp rsync-$version/*; gzip -9 $srctar_tmp";
print "Creating $diff_file ...\n"; print "Creating $diff_file ...\n";
rename("rsync-$version", 'b'); @_ = @extra_files;
map { s#^#rsync-$lastversion/# } @_;
system "tar xzf $lasttar_file @_";
rename("rsync-$lastversion", 'a');
system "make gen; rsync -a @extra_files b/";
my $sed_script = 's:^((---|\+\+\+) [ab]/[^\t]+)\t.*:\1:'; my $sed_script = 's:^((---|\+\+\+) [ab]/[^\t]+)\t.*:\1:';
system "(git diff v$lastversion v$version; diff -up a b | sed -r '$sed_script') | gzip -9 >$diff_file"; system "(git diff v$lastversion v$version; diff -up a b | sed -r '$sed_script') | gzip -9 >$diff_file";
system "rm -rf a b"; system "rm -rf a";
rename('b', "rsync-$version");
print "Creating $srctar_file ...\n";
system "git archive --format=tar --prefix=rsync-$version/ v$version | tar xf -";
system "support/git-set-file-times --prefix=rsync-$version/";
system "fakeroot tar czf $srctar_file rsync-$version; rm -rf rsync-$version";
system "support/patch-update --gen"; system "support/patch-update --gen";
symlink('.', "rsync-$version"); symlink('.', "rsync-$version");
system "tar czf $pattar_file rsync-$version/patches"; system "fakeroot tar czf $pattar_file rsync-$version/patches";
unlink("rsync-$version"); unlink("rsync-$version");
print "Updating the other files in $dest ...\n"; print "Updating the other files in $dest ...\n";
......
...@@ -8,6 +8,7 @@ use strict; ...@@ -8,6 +8,7 @@ use strict;
my %ls; my %ls;
my $commit_time; my $commit_time;
my $prefix = @ARGV && $ARGV[0] =~ s/^--prefix=// ? shift : '';
$/ = "\0"; $/ = "\0";
open FH, 'git ls-files -z|' or die $!; open FH, 'git ls-files -z|' or die $!;
...@@ -27,6 +28,7 @@ while (<FH>) { ...@@ -27,6 +28,7 @@ while (<FH>) {
my @files = delete @ls{split(/\0/, $_)}; my @files = delete @ls{split(/\0/, $_)};
@files = grep { defined $_ } @files; @files = grep { defined $_ } @files;
next unless @files; next unless @files;
map { s/^/$prefix/ } @files;
utime $commit_time, $commit_time, @files; utime $commit_time, $commit_time, @files;
} }
last unless %ls; last unless %ls;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment