6 my $tmpdir = $ENV{"OPENSSL_TMP_DIR"} // glob("~" . getlogin ) . "/tmpdist";
7 my $srcdir = $ENV{"OPENSSL_SRC_DIR"} // "/e/openssl/web/source";
8 my $ftpdir = $ENV{"OPENSSL_FTP_DIR"} // "/e/openssl/ftp/source";
9 my $mail = $ENV{"OPENSSL_MAIL"} // "mutt -s SUBJECT RECIP < BODY";
29 elsif (/^--mail-only$/)
34 elsif (/^--full-release$/)
41 print STDERR "Unknown command line argument $_";
46 die "Can't find distrubution directory $tmpdir" unless -d $tmpdir;
47 die "Can't find source directory $srcdir" unless -d $srcdir;
48 die "Can't find ftp directory $ftpdir" unless -d $ftpdir;
50 my @files = <$tmpdir/*>;
51 my $version = $files[0];
53 if ($version =~ /beta/)
55 $version =~ s/^.*\/openssl-(\d+\.\d+\.\d+[a-z]*-beta\d+)\..*$/$1/;
59 $version =~ s/^.*\/openssl-(\d+\.\d+\.\d+[a-z]*)\..*$/$1/;
62 my $announce = "$tmpdir/openssl-$version.txt.asc";
65 "openssl-$version.tar.gz",
66 "openssl-$version.tar.gz.md5",
67 "openssl-$version.tar.gz.sha1",
68 "openssl-$version.tar.gz.asc",
71 die "Unexpected files in temp directory" if (scalar @files > 5);
73 die "Announcement file $announce not found!" unless -f "$announce";
75 $do_copy = 0 if $mail_only;
80 if (! -f "$tmpdir/$_")
82 print STDERR "File $_ not found in temp directory!\n";
85 if (-e "$srcdir/$_" && !$mail_only)
87 print STDERR "File $_ already present in source directory!\n";
90 if (-e "$ftpdir/$_" && !$mail_only)
92 print STDERR "File $_ already present in ftp directory!\n";
99 print "Directory sanity check OK\n";
101 my $annversion = $version;
103 $annversion =~ s/-beta(\d+$)/ beta $1/;
105 print "Starting release for OpenSSL $annversion\n";
111 system("cp $tmpdir/$_ $srcdir/$_");
112 die "Error copying $_ to source directory!" if $?;
113 system("cp $tmpdir/$_ $ftpdir/$_");
114 die "Error linking $_ to ftp directory!" if $?;
116 print "Copied distributions files to source and ftp directories\n";
120 print "Test mode: no files copied\n";
123 $mail =~ s/SUBJECT/"OpenSSL version $annversion released"/;
124 $mail =~ s/RECIP/openssl-dev openssl-users openssl-announce/;
125 $mail =~ s/BODY/$announce/;
130 print "Sending announcement email...\n";
133 die "Error sending announcement email!" if $?;
134 print "Don't forget to authorise the openssl-announce email.\n";
139 print "Announcement email not sent automatically\n";
140 print "\nSend announcement mail manually with command:\n\n$mail\n\n";
143 print "Release successful!\n";