X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4d8639eb2d92facd482523465ea0fbffcddfc2ed..4f3797c7e261a7acc83d35bb930d271f19d63be3:/packaging/release-rsync diff --git a/packaging/release-rsync b/packaging/release-rsync index e70691e5..d083e6ba 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -20,36 +20,49 @@ my $ztoday = time2str('%d %b %Y', time); my $today = $ztoday; $today =~ s/^0//; -my $dots = <) { + print $_; + next if /\.(cvs)?ignore$/; + if (m#^[UP] rsync/(.*)#) { + my $fn = $1; + my($dir) = $fn =~ m#^(.+)/#; + push(@files, $dir) if defined($dir) && !$dirs{$1}++; + push(@files, $fn); + } +} chdir('rsync') or die $!; @@ -66,7 +79,7 @@ close IN; $lastversion =~ s/(\d+)cvs$/ $1 - 1 /e; $version =~ s/cvs/pre1/ || $version =~ s/pre(\d+)/ 'pre' . ($1 + 1) /e; -print "\nPlease enter the version number of this release: [$version] "; +print $break, "\nPlease enter the version number of this release: [$version] "; chomp($_ = ); if ($_ eq '.') { $version =~ s/pre\d+//; @@ -92,21 +105,22 @@ chomp($_ = ); $release = $_ if $_ ne ''; my $diffdir; +my $skipping2; if ($lastversion =~ /pre/) { if ($version !~ /pre/) { die "You should not diff a release version against a pre-release version.\n"; } $diffdir = "$dest/old-previews"; + $skipping2 = ' ** SKIPPING **'; } elsif ($version =~ /pre/) { $diffdir = $dest; + $skipping2 = ' ** SKIPPING **'; } else { $diffdir = "$dest/old-versions"; + $skipping2 = ''; } -my $tarfile = "$dest/rsync-$version.tar.gz"; - -print < "; $_ = ; +my $f_opt = /f/ ? ' -f' : ''; -print $dots; - +print $break; system "./prepare-source && touch proto.h"; my @tweak_files = ( glob('packaging/*.spec'), glob('packaging/*/*.spec'), @@ -140,82 +155,92 @@ foreach my $fn (@tweak_files) { undef $/; $_ = ; $/ = "\n"; close IN; if ($fn =~ /configure/) { - s/^RSYNC_VERSION.*/RSYNC_VERSION=$version/m; + s/^RSYNC_VERSION=.*/RSYNC_VERSION=$version/m; } elsif ($fn =~ /\.spec/) { s/^(Version:) .*/$1 $version/m; s/^(Release:) .*/$1 $release/m; } elsif ($fn =~ /\.yo/) { s/^(manpage\([^)]+\)\(\d+\)\()[^)]+(\).*)/$1$today$2/m; s/^(This man ?page is current for version) \S+ (of rsync)/$1 $version $2/m; + } elsif ($fn eq 'NEWS') { + s/^(NEWS for rsync \Q$version\E) \(UNRELEASED\)\s*\n/$1 ($today)\n/mi + or die "Couldn't update NEWS file with release date!\n"; + } elsif ($fn eq 'OLDNEWS') { + s/^\t\S\S\s\S\S\S\s\d\d\d\d(\t\Q$version\E)/\t$ztoday$1/m + or die "Couldn't update OLDNEWS file with release date!\n"; } else { - s/^(NEWS for rsync \Q$version\E) \(UNRELEASED\)\s*$/$1 ($today)\n/m; - s/^\t\S\S\s\S\S\S\s\d\d\d\d(\t\Q$version\E)/\t$ztoday$1/m; + die "Unrecognized file in \@tweak_files: $fn\n"; } open(OUT, '>', $fn) or die $!; print OUT $_; close OUT; } -system "yodl2man -o rsync.1 rsync.yo"; -system "yodl2man -o rsyncd.conf.5 rsyncd.conf.yo"; -#system "perl -pi -e \"s/\\\\\\'/\\\\&'/g\" rsync.1 rsyncd.conf.5"; +system "yodl2man -o rsync.1 rsync.yo; ./tweak_manpage_dashes rsync.1"; +system "yodl2man -o rsyncd.conf.5 rsyncd.conf.yo; ./tweak_manpage_dashes rsyncd.conf.5"; mkdir('patches/tmp') or die $!; system "rsync -a --exclude=patches/ --exclude-from=.cvsignore . patches/tmp/cvsdir/"; -print $dots, $note; - -system "patches/verify-patches -un -an"; +print "\n", $break, $note, $break; +system "patches/verify-patches -n -an$f_opt"; +print $break; system "cvs -q diff | egrep -v '^(===============|RCS file: |retrieving revision |Index: )' | less -p '^diff .*'"; -print < "; - $_ = ; +print " "; +$_ = ; +if ($live) { system "cvs commit -m 'Preparing for release of $version'"; system "cvs tag -F $cvstag ."; -} else { - print "** Skipping prompt in TESTMODE **\n"; } -print < "; $_ = ; -print $note; - -system "patches/verify-patches -pun -an"; - chdir($releasedir) or die $!; -print $dots; - -mkdir("rsync-$version", 0755) or die $!; -system "rsync -aC --exclude=.cvsignore rsync/ rsync-$version"; +print $break; +system "rm -rf rsync-$version"; +rename('rsync', "rsync-$version") or die $!; # When creating a pre-release after a normal release, there's nothing to move. if ($diffdir ne $dest) { chdir($dest) or die $!; + print "Shuffling old files ...\n"; + # We need to run this regardless of $lastversion's "pre"ness. my @moved_files; foreach my $fn (glob('rsync*pre*.tar.gz*'), glob('rsync*pre*-NEWS')) { @@ -230,52 +255,65 @@ if ($diffdir ne $dest) { push(@moved_files, $fn); } + foreach my $fn (glob('rsync*pre*.diffs.gz*')) { + unlink($fn); + } + foreach my $fn (glob('rsync*.diffs.gz*')) { - next if $fn =~ /^rsync.*pre/; link($fn, "old-patches/$fn") or die $!; push(@moved_files, $fn); } } # Optimize our future upload (in the absence of --detect-renamed) by - # uploading the above hard-linked files that we are about to delete. + # using rsync to hard-link the above files on samba.org. if ($live) { - system "rsync -avHC --include='rsync*.gz*' --include='old-*/' --exclude='*' . samba.org:/home/ftp/pub/rsync"; + system "rsync -avHOC --include='rsync*.gz*' --include='old-*/' --exclude='*' . samba.org:/home/ftp/pub/rsync"; } - foreach (@moved_files, glob("rsync*pre*.diffs.gz*")) { + foreach (@moved_files) { unlink($_); } chdir($releasedir) or die $!; } -system "fakeroot tar czf $tarfile rsync-$version"; -system "tar xzf $diffdir/rsync-$lastversion.tar.gz"; +print "Creating $tar_file ...\n"; +system "fakeroot tar czf $tar_file rsync-$version"; +open(TAR, '|-', "fakeroot tar --files-from=- --no-recursion --mode=g+w -czf $tar_file rsync-$version") or die $!; +foreach (@files) { + print TAR "rsync-$version/$_\n"; +} +close TAR; + +print "Creating $diff_file ...\n"; +system "rm -rf rsync-$version rsync-$lastversion"; +system "tar xzf $tar_file; tar xzf $diffdir/rsync-$lastversion.tar.gz"; ## TWEAK THE VERSIONS AS DESIRED HERE ## #mkdir("rsync-$lastversion/support", 0755) or die $!; #rename("rsync-$lastversion/rsyncstats", "rsync-$lastversion/support/rsyncstats"); +#unlink("rsync-$lastversion/.ignore"); ## END ## -system "diff -urN --exclude=patches rsync-$lastversion rsync-$version" - . "| gzip -9 >$dest/rsync-$lastversion-$version.diffs.gz"; +system "diff -urN --exclude=patches rsync-$lastversion rsync-$version| gzip -9 >$diff_file"; -system "rsync -a rsync/{README,NEWS,OLDNEWS,TODO} $dest"; +print "Updating the other files in $dest ...\n"; +system "rsync -a rsync-$version/{README,NEWS,OLDNEWS,TODO} $dest"; unlink("$dest/rsync-$version-NEWS"); link("$dest/NEWS", "$dest/rsync-$version-NEWS"); system "rsync -a $cvsroot/CVSROOT/rsync.updates $dest/cvs.log"; -system "yodl2html -o $dest/rsync.html rsync/rsync.yo"; -system "yodl2html -o $dest/rsyncd.conf.html rsync/rsyncd.conf.yo"; +system "yodl2html -o $dest/rsync.html rsync-$version/rsync.yo"; +system "yodl2html -o $dest/rsyncd.conf.html rsync-$version/rsyncd.conf.yo"; -system "rm -rf rsync rsync-*"; +system "rm -rf rsync-*"; if ($live) { chdir($dest) or die $!; - system "gpg -ba rsync-$version.tar.gz"; - system "gpg -ba rsync-$lastversion-$version.diffs.gz"; -} - -print <