+my $passphrase;
+while (1) {
+ ReadMode('noecho');
+ print "\nEnter your GPG pass-phrase: ";
+ chomp($passphrase = <STDIN>);
+ ReadMode(0);
+ print "\n";
+
+ # Briefly create a temp file with the passphrase for git's tagging use.
+ my $oldmask = umask 077;
+ unlink($passfile);
+ open(OUT, '>', $passfile) or die $!;
+ print OUT $passphrase, "\n";
+ close OUT;
+ 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;
+}