X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/fede378577ba1b8adbac90cba42026ba828f1a1f..99ba99c74c9d761a502e9d3ed59f1ff72311471f:/packaging/release-rsync diff --git a/packaging/release-rsync b/packaging/release-rsync index a3af5ff8..03ecdefe 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -87,24 +87,28 @@ chomp($_ = ); $lastversion = $_ if $_ ne ''; $lastversion =~ s/[-.]*pre[-.]*/pre/; -my $release = 1; +my $pre = $version =~ /(pre\d+)/ ? $1 : ''; + +my $release = $pre ? '0.1' : '1'; print "Please enter the RPM release number of this release: [$release] "; chomp($_ = ); $release = $_ if $_ ne ''; +$release .= ".$pre" if $pre; -my $diffdir; -my $skipping; +my($srcdir,$srcdiffdir,$lastsrcdir,$skipping); if ($lastversion =~ /pre/) { - if ($version !~ /pre/) { + if (!$pre) { die "You should not diff a release version against a pre-release version.\n"; } - $diffdir = "$dest/old-previews"; + $srcdir = $srcdiffdir = $lastsrcdir = 'src-previews'; $skipping = ' ** SKIPPING **'; -} elsif ($version =~ /pre/) { - $diffdir = $dest; +} elsif ($pre) { + $srcdir = $srcdiffdir = 'src-previews'; + $lastsrcdir = 'src'; $skipping = ' ** SKIPPING **'; } else { - $diffdir = "$dest/old-versions"; + $srcdir = $lastsrcdir = 'src'; + $srcdiffdir = 'src-diffs'; $skipping = ''; } @@ -113,7 +117,9 @@ print "\n", $break, < "; $_ = ; -my @tweak_files = ( glob('packaging/*.spec'), glob('packaging/*/*.spec'), - glob('*.yo'), qw( configure.in options.c ) ); +(my $finalversion = $version) =~ s/pre\d+//; +my %specvars = ( 'Version:' => $finalversion, 'Release:' => $release, + '%define fullversion' => "\%{version}$pre", 'Released' => "$version." ); +my @tweak_files = ( glob('packaging/*.spec'), glob('packaging/*/*.spec'), glob('*.yo'), + qw( configure.in rsync.h NEWS OLDNEWS options.c ) ); -if ($version !~ /pre/) { - push(@tweak_files, qw( rsync.h NEWS OLDNEWS )); -} foreach my $fn (@tweak_files) { open(IN, '<', $fn) or die $!; undef $/; $_ = ; $/ = "\n"; close IN; if ($fn =~ /configure/) { - s/^RSYNC_VERSION=.*/RSYNC_VERSION=$version/m; + s/^RSYNC_VERSION=.*/RSYNC_VERSION=$version/m + or die "Unable to update RSYNC_VERSION in $fn\n"; } elsif ($fn =~ /\.spec/) { - s/^(Version:) .*/$1 $version/m; - s/^(Release:) .*/$1 $release/m; - s/^(Released) .*/$1 $version./m; - s/^\* \w\w\w \w\w\w \d\d \d\d\d\d (.*)/$cl_today $1/m; + while (my($str, $val) = each %specvars) { + s/^\Q$str\E .*/$str $val/m + or die "Unable to update $str in $fn\n"; + } + s/^\* \w\w\w \w\w\w \d\d \d\d\d\d (.*)/$cl_today $1/m + or die "Unable to update ChangeLog header in $fn\n"; } 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"; + s/^(manpage\([^)]+\)\(\d+\)\()[^)]+(\).*)/$1$today$2/m + or die "Unable to update date in manpage() header in $fn\n"; + s/^(This man ?page is current for version) \S+ (of rsync)/$1 $version $2/m + or die "Unable to update current version info in $fn\n"; } elsif ($fn eq 'rsync.h') { - s/(#define\s+SUBPROTOCOL_VERSION)\s+\d+/$1 0/; + s/(#define\s+SUBPROTOCOL_VERSION)\s+\d+/$1 0/ + or die "Unable to find SUBPROTOCOL_VERSION define in $fn\n"; + next if $pre; + } elsif ($fn eq 'NEWS') { + s/^(NEWS for rsync \Q$finalversion\E) \(UNRELEASED\)\s*\n/$1 ($today)\n/mi + or die "The first line of $fn is not in the right format. It must be:\n" + . "NEWS for rsync $finalversion (UNRELEASED)\n"; + next if $pre; } 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"; + s/^\t\S\S\s\S\S\S\s\d\d\d\d(\t\Q$finalversion\E)/\t$ztoday$1/m + or die "Unable to find \"?? ??? $year\t$finalversion\" line in $fn\n"; + next if $pre; } elsif ($fn eq 'options.c') { - s/(rprintf\(f, "Copyright \(C\) 1996-)\d+/$1$year/; - s/(Copyright \(C\) 2002-)\d+( Wayne Davison)/$1$year$2/; + if (s/(Copyright \(C\) 2002-)(\d+)( Wayne Davison)/$1$year$3/ + && $2 ne $year) { + die "Copyright comments need to be updated to $year in all files!\n"; + } + # Adjust the year in the --version output. + s/(rprintf\(f, "Copyright \(C\) 1996-)(\d+)/$1$year/ + or die "Unable to find Copyright string in --version output of $fn\n"; + next if $2 eq $year; } else { die "Unrecognized file in \@tweak_files: $fn\n"; } @@ -173,18 +195,18 @@ system "git diff --color | less -p '^diff .*'"; my $srctar_name = "rsync-$version.tar.gz"; my $pattar_name = "rsync-patches-$version.tar.gz"; my $diff_name = "rsync-$lastversion-$version.diffs.gz"; -my $srctar_file = "$dest/$srctar_name"; -my $pattar_file = "$dest/$pattar_name"; -my $diff_file = "$dest/$diff_name"; -my $lasttar_file = "$dest/rsync-$lastversion.tar.gz"; +my $srctar_file = "$dest/$srcdir/$srctar_name"; +my $pattar_file = "$dest/$srcdir/$pattar_name"; +my $diff_file = "$dest/$srcdiffdir/$diff_name"; +my $news_file = "$dest/$srcdir/rsync-$version-NEWS"; +my $lasttar_file = "$dest/$lastsrcdir/rsync-$lastversion.tar.gz"; print $break, <$dest/ChangeLog.gz"; system "yodl2html -o $dest/rsync.html rsync.yo"; system "yodl2html -o $dest/rsyncd.conf.html rsyncd.conf.yo"; -chdir($dest) or die $!; my $cnt = 0; -foreach my $fn ($srctar_name, $pattar_name, $diff_name) { +print "\n"; +foreach my $fn ($srctar_file, $pattar_file, $diff_file) { print ++$cnt, ". Sign file \"$fn\":"; system "gpg -ba $fn"; } + +if (!$pre) { + system "rm $dest/rsync-*{.tar.gz,.asc,-NEWS} $dest/src-preview/rsync-*diffs.gz"; + + foreach my $fn ($srctar_file, "$srctar_file.asc", + $pattar_file, "$pattar_file.asc", + $diff_file, "$diff_file.asc", $news_file) { + (my $top_fn = $fn) =~ s#/src(-\w+)?/#/#; + link($fn, $top_fn); + } +} + print $break, <<'EOT'; Local changes are done. When you're satisfied, push the git repository