diff options
Diffstat (limited to 'bin/make_release')
-rwxr-xr-x | bin/make_release | 487 |
1 files changed, 0 insertions, 487 deletions
diff --git a/bin/make_release b/bin/make_release deleted file mode 100755 index cecab1730ed..00000000000 --- a/bin/make_release +++ /dev/null @@ -1,487 +0,0 @@ -eval '(exit $?0)' && eval 'exec perl -w -S $0 ${1+"$@"}' - & eval 'exec perl -w -S $0 $argv:q' - if 0; - -# $Id$ -# -# Creates an ACE or TAO kit. Intended to be called from the -# ACE or TAO top-level Makefiles. -# -# The first three lines above let this script run without specifying the -# full path to perl, as long as it is in the user's PATH. -# Taken from perlrun man page. - -$usage="usage: $0 [-?] [-k <kit>] [-n] [-t <type>] " . - "[-c <controlled files>] [-r <release files>] " . - "[-l <release lib files] [-u]\n"; -$long_usage=" -? option prints this message\n" . - " -k <kit>, where <kit> is ace, tao, or ace+tao\n" . - " -n option prints what would be done, but doesn't do it\n" . - " -t <type>, where <type> is major, minor, or beta (default)\n" . - " -c <controlled files> lists the CVS-controlled files\n" . - " -r <release files> lists the files to be released\n" . - " -l <release lib files> list the files to put in the lib kit\n" . - " -u to update versions\n"; - -######## -######## Configuration parameters. -######## -if (-d '/pkg/gnu/bin') { - $gnu = '/pkg/gnu/bin/'; - #### Insert it at head of PATH, so that cvs diff uses GNU diff. - $ENV{'PATH'} = "/pkg/gnu/bin:" . $ENV{'PATH'}; -} else { - #### The default utilities had better be GNU. - $gnu = ''; -} - -$exec_prefix = $exec_suffix = ''; -$kit = ''; -$release_type = 'beta'; -$controlled_files = ''; -$release_files = ''; -$release_filter = '\\( -name CVS -o -name build \\) -prune -o ' . - '! -name \'.\#*\' ! -name \'\#*\' ! -name \'*~\' ' . - '! -name \'*.MAK\' -print'; -$update_versions = 0; - - -######## -######## Process command line args. -######## -while ($#ARGV >= $[ && $ARGV[0] =~ /^-/) { - if ($ARGV[0] eq '-k') { - if ($ARGV[1] =~ /^[^-]+/ && - ($ARGV[1] eq 'ace' || $ARGV[1] eq 'tao' || $ARGV[1] eq 'ace+tao')) { - $kit = $ARGV[1]; shift; - } else { - print STDERR "$0: must provide argument for -k option\n"; - die "$usage$long_usage"; - } - } elsif ($ARGV[0] eq '-n') { - $exec_prefix = 'echo \''; - $exec_suffix = '\''; - } elsif ($ARGV[0] eq '-t') { - if ($ARGV[1] =~ /^[^-]+/ && - ($ARGV[1] eq 'major' || $ARGV[1] eq 'minor' || - $ARGV[1] eq 'beta')) { - $release_type = $ARGV[1]; shift; - } else { - print STDERR "$0: must provide argument for -t option\n"; - die "$usage$long_usage"; - } - } elsif ($ARGV[0] eq '-c') { - if ($ARGV[1] =~ /^[^-]+/) { - $controlled_files = $ARGV[1]; shift; - } else { - print STDERR "$0: must provide argument for -c option\n"; - die "$usage$long_usage"; - } - } elsif ($ARGV[0] eq '-r') { - if ($ARGV[1] =~ /^[^-]+/) { - $release_files = $ARGV[1]; shift; - } else { - print STDERR "$0: must provide argument for -r option\n"; - die "$usage$long_usage"; - } - } elsif ($ARGV[0] eq '-l') { - if ($ARGV[1] =~ /^[^-]+/) { - $release_lib_files = $ARGV[1]; shift; - } else { - print STDERR "$0: must provide argument for -l option\n"; - die "$usage$long_usage"; - } - } elsif ($ARGV[0] eq '-u') { - $update_versions = 1; - } elsif ($ARGV[0] eq '-?') { - print "$usage$long_usage"; - exit; - } else { - print STDERR "$0: unknown option $ARGV[0]\n"; - die "$usage$long_usage"; - } - shift; -} - -die "must specify a -k option\n" unless "$kit"; -if ($kit eq 'ace') { - $KIT = 'ACE'; -} elsif ($kit eq 'tao') { - $KIT = 'TAO'; -} else { - #### Creating combined ACE+TAO kit. Don't use $KIT. -}; - -$chmod = '/bin/chmod'; -$cpio = "${gnu}cpio"; -$cvs = "${exec_prefix}${gnu}cvs"; -$date = "${gnu}date"; -$egrep = "${gnu}egrep"; -$find = "${gnu}find"; -$gzip = "${gnu}gzip"; -$mv = '/bin/mv'; -chop ($now = `$date +"%a %b %d %T %Y"`); - - -######## -######## Setup signal handlers. -######## -$status = 1; #### Must get set to 0 explicitly to indicate success. -$SIG{'HUP'} = $SIG{'INT'} = $SIG{'QUIT'} = $SIG{'TERM'} = 'cleanup'; - - -######## -######## Defend against fascist umasks. -######## -umask 022; - - -######## -######## Main execution thread. -######## -if ($update_versions && "$kit" ne 'ace+tao') { - $major_version = $minor_version = $beta_version = 0; - $previous_version = $version = ''; - - $status = - &check_workspace () || - &get_versions () || - &update_version_files () || - &update_changelog () || - &tag () || - &diff () || - &create_kit (); -} else { - $status = &create_kit (); -} -&cleanup; - - -######## -######## Clean up when done or on signal. -######## -sub cleanup { - exit $status; -} - - -######## -######## Check that the workspace is up-to-date, if releasing from -######## the official release directory. -######## -sub check_workspace () { - my $module; - - if ($kit =~ /^ace/) { - chdir '..' || die "$0: unable to chdir ..\n"; - $module = 'ACE_wrappers'; - } elsif ($kit =~ /tao/) { - chdir '../..' || die "$0: unable to chdir ../..\n"; - $module = 'ACE_wrappers/TAO'; - } - - my @out_of_date = (); - open (CVS, "$cvs -nq checkout -P $module 2>&1 |") || - die "$0: unable to open $cvs\n"; - while (<CVS>) { - next if m%^U %; #### Allow others to update the repository. - next if m%^cvs checkout: New directory `.*' -- ignored$%; #### empty dirs. - - push (@out_of_date, $_) if "$_"; - } - close CVS; - - if ($kit =~ /^ace/) { - chdir 'ACE_wrappers' || die "$0: unable to chdir ACE_wrappers\n"; - } elsif ($kit =~ /tao/) { - chdir 'ACE_wrappers/TAO' || die "$0: unable to chdir ACE_wrappers/TAO\n"; - } - - if (! "$exec_prefix" && @out_of_date) { - warn "ERROR: workspace must be updated (with cvs -q up -d) or " . - "cleaned:\n " . - join ("\n ", @out_of_date) . "\n"; - return 1; - } - - 0; -} - - -######## -######## Retrieve version information from VERSION file(s). -######## -sub get_versions () { - open (VERSION, '< VERSION') || - die "$0: unable to open VERSION\n"; - while (<VERSION>) { - if (/$KIT version (\d+)\.(\d+)\.(\d+)/o) { - $major_version = $1; - $minor_version = $2; - $beta_version = $3; - last; - } elsif (/$KIT version (\d+)\.(\d+)[^\.]/o) { - #### Previous release was a minor. - $major_version = $1; - $minor_version = $2; - last; - } elsif (/$KIT version (\d+)[^\.]/o) { - #### Previous release was a major. - $major_version = $1; - last; - } - } - close VERSION; - - if ($release_type eq 'beta') { - if ($beta_version > 0) { - $previous_version = "$major_version.$minor_version.$beta_version"; - } else { - $previous_version = "$major_version.$minor_version"; - } - - ++$beta_version; - $version = "$major_version.$minor_version.$beta_version"; - } elsif ($release_type eq 'minor' ) { - $beta_version = 0; - ++$minor_version; - $version = "$major_version.$minor_version"; - } elsif ($release_type eq 'major' ) { - $minor_version = $beta_version = 0; - ++$major_version; - $version = "$major_version.$minor_version"; - } - - print "new $KIT version: $version\n"; - - if ($kit =~ /tao/) { - $ace_minor_version = $ace_beta_version = 0; - open (ACE_VERSION, '< ../VERSION') || - die "$0: unable to open ../VERSION\n"; - while (<ACE_VERSION>) { - if (/ACE version (\d+)\.(\d+)\.(\d+)/o) { - $ace_major_version = $1; - $ace_minor_version = $2; - $ace_beta_version = $3; - last; - } elsif (/ACE version (\d+)\.(\d+)[^\.]/o) { - #### ACE release was a minor. - $ace_major_version = $1; - $ace_minor_version = $2; - last; - } elsif (/ACE version (\d+)[^\.]/o) { - #### ACE release was a major. - $ace_major_version = $1; - last; - } - } - close ACE_VERSION; - - if ($ace_beta_version == 0) { - $ace_version = "$ace_major_version.$ace_minor_version"; - } else { - $ace_version = "$ace_major_version.$ace_minor_version.$ace_beta_version"; - } - } - - 0; -} - - -######## -######## Update VERSION file(s). -######## -sub update_version_files () { - system ("$exec_prefix" . - "perl -pi -e 's/$KIT version .*/$KIT version $version, released $now./' " . - "VERSION $exec_suffix"); - return 1 if $? >> 8; - - system ("$exec_prefix" . - "perl -pi -e 's/$KIT VERSION:.*/$KIT VERSION: $version/' " . - "PROBLEM-REPORT-FORM $exec_suffix"); - return 1 if $? >> 8; - - if (! "$exec_prefix" && $kit =~ /^tao/) { - system ("$exec_prefix" . - "perl -pi -e 's/ACE VERSION:.*/ACE VERSION: $ace_version/' " . - "PROBLEM-REPORT-FORM $exec_suffix"); - return 1 if $? >> 8; - - open (TAO_VERSION_H, "> tao/Version.h") || - die "$0: unable to open tao/Version.h\n"; - - print TAO_VERSION_H - "// \$Id\$\n" . - "// This is an automatically generated file.\n\n" . - "\#define TAO_MAJOR_VERSION ${major_version}\n" . - "\#define TAO_MINOR_VERSION ${minor_version}\n" . - "\#define TAO_BETA_VERSION ${beta_version}\n" . - "\#define TAO_VERSION \"${version}\"\n"; - - close TAO_VERSION_H; - } - - if (! "$exec_prefix" && $kit =~ /^ace/) { - open (ACE_VERSION_H, "> ace/Version.h") || - die "$0: unable to open ace/Version.h\n"; - - print ACE_VERSION_H - "// \$Id\$\n" . - "// This is an automatically generated file.\n\n" . - "\#define ACE_MAJOR_VERSION ${major_version}\n" . - "\#define ACE_MINOR_VERSION ${minor_version}\n" . - "\#define ACE_BETA_VERSION ${beta_version}\n" . - "\#define ACE_VERSION \"${version}\"\n"; - - close ACE_VERSION_H; - } - - 0; -} - - -######## -######## Add ChangeLog entries, and make sure that they have proper -######## permissions. -######## -sub update_changelog () { - my $logname = $ENV{'LOGNAME'}; - my $signature = $ENV{'SIGNATURE'} || $logname; - my $message = "$now $signature <$logname\\\@cs.wustl.edu>\n\n" . - " * $KIT version $version released.\n\n"; - my $message_insert = - "perl -pi -e 'BEGIN {\$message_printed = 0;} - if (! \$message_printed) { - print \"$message\"; - ++\$message_printed; }' ChangeLog"; - - if ("$exec_prefix") { - print "$message_insert\n"; - } else { - system ($message_insert); - } - - if ($kit =~ /^ace/) { - system ("$cvs commit -m'$version' " . - "VERSION PROBLEM-REPORT-FORM ChangeLog ace/Version.h " . - "&& chmod 0644 VERSION PROBLEM-REPORT-FORM ChangeLog " . - "ace/Version.h"); - } elsif ($kit =~ /tao/) { - system ("$cvs commit -m'$version' VERSION PROBLEM-REPORT-FORM ChangeLog " . - "tao/Version.h " . - "&& chmod 0644 VERSION PROBLEM-REPORT-FORM ChangeLog " . - "tao/Version.h"); - } - return 1 if $? >> 8; - - 0; -} - - -######## -######## Tag the release. -######## -sub tag () { - my $tag = "$KIT-$version"; - #### cvs tag does not allow dots. - $tag =~ tr/./_/; - - print "start tagging $tag\n"; - system ("$cvs -q tag $tag $controlled_files > /dev/null"); - return 1 if $? >> 8; - print "finished tagging $tag\n"; - - 0; -} - - -######## -######## If building a beta, create a diff from the previous version. -######## -sub diff () { - if ("$previous_version") { - #### Only create a diff for a beta version. - - my $previous_tag = "$KIT-$previous_version"; - my $tag = "$KIT-$version"; - my $diffs_dir = "$kit" eq 'ace' ? 'diffs' : '../diffs'; - - #### cvs tag does not allow dots. - $previous_tag =~ tr/./_/; - $tag =~ tr/./_/; - - my $module = "$kit" eq 'ace' ? 'ACE_wrappers' : 'ACE_wrappers/TAO'; - - if ("$exec_prefix") { - print "nice -15 $cvs -q rdiff -u -r $previous_tag -r $tag " . - "$module 2>/dev/null | " . - "nice -15 sed 's%ACE_wrappers-repository/%ACE_wrappers/%g' | " . - "nice -15 $gzip -9 > $diffs_dir/$previous_tag-$tag.diff.gz &"; - } else { - system ("sleep 60; " . - "nice -15 $cvs -q rdiff -u -r $previous_tag -r $tag " . - "$module 2>/dev/null | " . - "nice -15 sed 's%ACE_wrappers-repository/%ACE_wrappers/%g' | " . - "nice -15 $gzip -9 > $diffs_dir/$previous_tag-$tag.diff.gz &"); - } - } - - #### Ignore return value. No promises on diffs. - 0; -} - - -######## -######## Create the tar file(s) and move to their proper location. -######## -sub create_kit () { - if ("$exec_prefix") { - print "chdir '..'\n"; - } else { - chdir '..' || die "$0: unable to chdir ..\n"; - } - - # These files don't get LF->CRLF conversions done when making the zip. - $bin_files = - "\"\\.dsp|\\.dsw|\\.mak|\\.mdp|\\.ide|\\.exe\|\\.ico\|\\.gz\|\\.zip\|\\.gif\""; - - if ($kit eq 'ace') { - system ("$exec_prefix" . - "/bin/rm -f ACE.zip ACE-lib.zip; " . - "$find $release_files $release_filter | " . - "$egrep $bin_files | " . - "zip ACE.zip -q9@ &&" . - "$find $release_files $release_filter | " . - "$egrep -v $bin_files | " . - "zip ACE.zip -qlg9@ &&" . - "$find $release_lib_files $release_filter | " . - "$egrep $bin_files | " . - "zip ACE-lib.zip -q9@ &&" . - "$find $release_lib_files $release_filter | " . - "$egrep -v $bin_files | " . - "zip ACE-lib.zip -qlg9@ &&" . - "$find $release_files $release_filter | $cpio -o -H tar | " . - "$gzip -9 > ACE.tar.gz && " . - "$find $release_lib_files $release_filter | $cpio -o -H tar | " . - "$gzip -9 > ACE-lib.tar.gz && " . - "$chmod a+r ACE.tar.gz ACE-lib.tar.gz ACE.zip ACE-lib.zip && " . - "$mv ACE.zip ACE-lib.zip ACE_wrappers/ &&" . - "$mv ACE.tar.gz ACE-lib.tar.gz ACE_wrappers/ $exec_suffix"); - } elsif ($kit eq 'ace+tao') { - system ("$exec_prefix" . - "/bin/rm -f ACE+TAO.zip; " . - "$find $release_files $release_filter | " . - "$egrep $bin_files | " . - "zip ACE+TAO.zip -q9@ &&" . - "$find $release_files $release_filter | " . - "$egrep -v $bin_files | " . - "zip ACE+TAO.zip -qlg9@ &&" . - "$find $release_files $release_filter | $cpio -o -H tar | " . - "$gzip -9 > ACE+TAO.tar.gz && " . - "$chmod a+r ACE+TAO.tar.gz ACE+TAO.zip && " . - "$mv ACE+TAO.tar.gz ACE+TAO.zip ACE_wrappers/ $exec_suffix"); - } - - 0; -} |