X-Git-Url: https://mattmccutchen.net/rsync/rsync.git/blobdiff_plain/4f282b0b9214e6b195b67b3ceb26c786747a9a7b..4c4a2962097e618480d37ffffbb2a2714a6ecbf5:/packaging/release-rsync diff --git a/packaging/release-rsync b/packaging/release-rsync index 957e8929..ddd8bedd 100755 --- a/packaging/release-rsync +++ b/packaging/release-rsync @@ -1,11 +1,11 @@ -#!/usr/bin/perl -w -use strict; - +#!/usr/bin/perl # This script expects the directory ~/samba-rsync-ftp to exist and to be a # copy of the /home/ftp/pub/rsync dir on samba.org. When the script is done, # the git repository in the current directory will be updated, and the local # ~/samba-rsync-ftp dir will be ready to be rsynced to samba.org. +use strict; +use warnings; use Cwd; use Getopt::Long; use Term::ReadKey; @@ -14,6 +14,7 @@ use Date::Format; my $dest = $ENV{HOME} . '/samba-rsync-ftp'; my $passfile = $ENV{HOME} . '/.rsyncpass'; my $path = $ENV{PATH}; +my $make_gen_cmd = 'make -f prepare-source.mak conf && ./config.status && make gen'; &Getopt::Long::Configure('bundling'); &usage if !&GetOptions( @@ -60,9 +61,7 @@ die "There is no .git dir in the current directory.\n" unless -d '.git'; die "'a' must not exist in the current directory.\n" if -e 'a'; die "'b' must not exist in the current directory.\n" if -e 'b'; -open(IN, '-|', 'git status') or die $!; -my $status = join('', ); -close IN; +my $status = `git status`; die "The checkout is not clean:\n", $status unless $status =~ /\nnothing to commit \(working directory clean\)/; my($cur_branch) = $status =~ /^# On branch (.+)\n/; if ($cur_branch ne $master_branch) { @@ -74,6 +73,19 @@ if ($cur_branch ne $master_branch) { $master_branch = $cur_branch; } +if (-d 'patches/.git') { + $status = `cd patches && git status`; + die "The *patches* checkout is not clean:\n", $status unless $status =~ /\nnothing to commit \(working directory clean\)/; + ($cur_branch) = $status =~ /^# On branch (.+)\n/; + if ($cur_branch ne $master_branch) { + print "The *patches* checkout is on branch $cur_branch, not branch $master_branch.\n"; + print "Do you want to change it to branch $master_branch? [n] "; + $_ = ; + exit 1 unless /^y/i; + system "cd patches && git checkout '$master_branch'"; + } +} + my $confversion; open(IN, '<', 'configure.in') or die $!; while () { @@ -291,6 +303,10 @@ if ($ans =~ /^y/i) { system "packaging/patch-update --branch=$master_branch --shell"; } +if (-d 'patches/.git') { + system "cd patches && git commit -a -m 'The patches for $version.'" and exit 1; +} + print $break, < "; $_ = ; +# We want to use our passphrase-providing "gpg" script, so modify the PATH. +$ENV{PATH} = "$curdir/packaging/bin:$path"; + my $passphrase; while (1) { ReadMode('noecho'); @@ -325,17 +344,23 @@ while (1) { umask $oldmask; $ENV{'GPG_PASSFILE'} = $passfile; - # We want to use our passphrase-providing "gpg" script, so modify the PATH. - $ENV{PATH} = "packaging/bin:$path"; $_ = `git tag -s -m 'Version $version.' v$version 2>&1`; - $ENV{PATH} = $path; - unlink($passfile); print $_; next if /bad passphrase/; - last unless /failed/; - exit 1; + exit 1 if /failed/; + + if (-d 'patches/.git') { + $_ = `cd patches && git tag -s -m 'Version $version.' v$version 2>&1`; + print $_; + exit 1 if /bad passphrase|failed/; + } + + unlink($passfile); + last; } +$ENV{PATH} = $path; + # Extract the generated files from the old tar. @_ = @extra_files; map { s#^#rsync-$lastversion/# } @_; @@ -343,7 +368,7 @@ system "tar xzf $lasttar_file @_"; rename("rsync-$lastversion", 'a'); print "Creating $diff_file ...\n"; -system "./config.status Makefile; make gen; rsync -a @extra_files b/"; +system "$make_gen_cmd && rsync -a @extra_files b/" and exit 1; my $sed_script = 's:^((---|\+\+\+) [ab]/[^\t]+)\t.*:\1:'; system "(git diff v$lastversion v$version; diff -upN a b | sed -r '$sed_script') | gzip -9 >$diff_file"; system "rm -rf a";