Merge branch 'master' of ssh://github.com/open-mpi/ompi
Этот коммит содержится в:
Коммит
bd2974f239
@ -12,8 +12,8 @@ results_addr=testing@open-mpi.org
|
|||||||
# svn repository uri
|
# svn repository uri
|
||||||
master_code_uri=https://github.com/open-mpi/ompi.git
|
master_code_uri=https://github.com/open-mpi/ompi.git
|
||||||
master_raw_uri=https://raw.github.com/open-mpi/ompi
|
master_raw_uri=https://raw.github.com/open-mpi/ompi
|
||||||
release_code_uri=https://github.com/open-mpi/ompi.git
|
release_code_uri=https://github.com/open-mpi/ompi-release.git
|
||||||
release_raw_uri=https://raw.github.com/open-mpi/ompi
|
release_raw_uri=https://raw.github.com/open-mpi/ompi-release
|
||||||
|
|
||||||
# where to put built tarballs
|
# where to put built tarballs
|
||||||
outputroot=/l/osl/www/www.open-mpi.org/nightly
|
outputroot=/l/osl/www/www.open-mpi.org/nightly
|
||||||
@ -26,10 +26,10 @@ script_dir=/u/mpiteam/scripts
|
|||||||
|
|
||||||
# The tarballs to make
|
# The tarballs to make
|
||||||
if [ $# -eq 0 ] ; then
|
if [ $# -eq 0 ] ; then
|
||||||
# We're no longer ever checking the 1.0 - 1.4 branches anymore
|
# We're no longer ever checking the 1.0 - 1.6 branches anymore
|
||||||
branches="master v1.8 v1.6"
|
branches="master v1.8"
|
||||||
else
|
else
|
||||||
dirs=$@
|
branches=$@
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build root - scratch space
|
# Build root - scratch space
|
||||||
|
@ -2,9 +2,10 @@
|
|||||||
|
|
||||||
# The tarballs to make
|
# The tarballs to make
|
||||||
if [ $# -eq 0 ] ; then
|
if [ $# -eq 0 ] ; then
|
||||||
dirs="branches/v1.8"
|
branches="v1.8"
|
||||||
else
|
else
|
||||||
dirs=$@
|
branches=$1
|
||||||
|
shift
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Build root - scratch space
|
# Build root - scratch space
|
||||||
@ -29,14 +30,12 @@ module load sowing
|
|||||||
|
|
||||||
# move to the directory
|
# move to the directory
|
||||||
# Loop making them
|
# Loop making them
|
||||||
for dir in $dirs; do
|
for branch in $branches; do
|
||||||
ver=`basename $dir`
|
cd $build_root/$branch
|
||||||
|
|
||||||
cd $build_root/$ver
|
module load "autotools/ompi-$branch"
|
||||||
|
|
||||||
module load "autotools/ompi-$ver"
|
./$script $@ >dist.out 2>&1
|
||||||
|
|
||||||
./$script $@ >dist.out 2>&1
|
|
||||||
if test "$?" != "0"; then
|
if test "$?" != "0"; then
|
||||||
cat <<EOF
|
cat <<EOF
|
||||||
=============================================================================
|
=============================================================================
|
||||||
@ -48,5 +47,5 @@ EOF
|
|||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
module unload "autotools"
|
module unload "autotools"
|
||||||
done
|
done
|
||||||
|
17
contrib/dist/find-copyrights.pl
поставляемый
17
contrib/dist/find-copyrights.pl
поставляемый
@ -15,24 +15,19 @@ my $copyrights;
|
|||||||
|
|
||||||
# Ensure that we're in the top of an SVN or hg directory.
|
# Ensure that we're in the top of an SVN or hg directory.
|
||||||
|
|
||||||
my $good = 0;
|
|
||||||
$good = 1
|
|
||||||
if (-d ".hg");
|
|
||||||
$good = 1
|
|
||||||
if (-d ".svn" && -f "README.WINDOWS.txt" && -f "VERSION");
|
|
||||||
die "Must be in root of OMPI tree"
|
die "Must be in root of OMPI tree"
|
||||||
if (!$good);
|
if (! -d ".git");
|
||||||
|
|
||||||
# Find all interesting files (skip the top-level LICENSE file)
|
# Find all interesting files (skip the top-level LICENSE file)
|
||||||
my @files;
|
my @files;
|
||||||
&File::Find::find(
|
&File::Find::find(
|
||||||
sub {
|
sub {
|
||||||
push(@files, $File::Find::name)
|
push(@files, $File::Find::name)
|
||||||
if ($_ ne "." && $_ ne ".." &&
|
if ($_ ne "." && $_ ne ".." &&
|
||||||
!($_ eq "LICENSE" && $File::Find::dir eq ".") &&
|
!($_ eq "LICENSE" && $File::Find::dir eq ".") &&
|
||||||
$_ !~ /~$/ && $_ !~ /\.bak$/ && $_ !~ /\.orig$/ &&
|
$_ !~ /~$/ && $_ !~ /\.bak$/ && $_ !~ /\.orig$/ &&
|
||||||
-f $_ && ! -l $_ &&
|
-f $_ && ! -l $_ &&
|
||||||
$File::Find::dir !~ /\.svn/ &&
|
$File::Find::dir !~ /\.git/ &&
|
||||||
$File::Find::dir !~ /\.libs/ &&
|
$File::Find::dir !~ /\.libs/ &&
|
||||||
$File::Find::dir !~ /\.deps/);
|
$File::Find::dir !~ /\.deps/);
|
||||||
},
|
},
|
||||||
@ -66,7 +61,7 @@ sub save {
|
|||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
# Save a single year
|
# Save a single year
|
||||||
if (!exists($copyrights->{$core}->{$org}->{$year}->{$file})) {
|
if (!exists($copyrights->{$core}->{$org}->{$year}->{$file})) {
|
||||||
$copyrights->{$core}->{$org}->{$year}->{$file} = 1;
|
$copyrights->{$core}->{$org}->{$year}->{$file} = 1;
|
||||||
@ -104,7 +99,7 @@ foreach my $f (@files) {
|
|||||||
$current = $2;
|
$current = $2;
|
||||||
}
|
}
|
||||||
# Beginning of something else
|
# Beginning of something else
|
||||||
elsif (defined($current) &&
|
elsif (defined($current) &&
|
||||||
($line =~ /\s*\*\s*$/ ||
|
($line =~ /\s*\*\s*$/ ||
|
||||||
$line =~ /^\s*$/ ||
|
$line =~ /^\s*$/ ||
|
||||||
$line =~ /^\s*\#\s*$/)) {
|
$line =~ /^\s*\#\s*$/)) {
|
||||||
@ -149,7 +144,7 @@ print "Found copyrights:\n";
|
|||||||
foreach my $c (qw/1 0/) {
|
foreach my $c (qw/1 0/) {
|
||||||
print "========= Core: $c\n";
|
print "========= Core: $c\n";
|
||||||
foreach my $org (sort(keys(%{$copyrights->{$c}}))) {
|
foreach my $org (sort(keys(%{$copyrights->{$c}}))) {
|
||||||
print "$org: " . join(",",
|
print "$org: " . join(",",
|
||||||
sort(keys(%{$copyrights->{$c}->{$org}}))) . "\n";
|
sort(keys(%{$copyrights->{$c}->{$org}}))) . "\n";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
402
contrib/dist/gkcommit.pl
поставляемый
402
contrib/dist/gkcommit.pl
поставляемый
@ -1,402 +0,0 @@
|
|||||||
#!/usr/bin/env perl
|
|
||||||
#
|
|
||||||
# Copyright (c) 2010 Cisco Systems, Inc. All rights reserved.
|
|
||||||
#
|
|
||||||
# Helper script for gatekeepers: it marshals together a GK-worthy SVN
|
|
||||||
# commit message containing the CMR number(s) being closed and SVN
|
|
||||||
# commit log messages for the SVN r numbers referenced.
|
|
||||||
#
|
|
||||||
|
|
||||||
use strict;
|
|
||||||
|
|
||||||
use locale ':not_characters';
|
|
||||||
# Respect the locale (LANG, LC_CTYPE, etc.) specified in the environment in
|
|
||||||
# which this script is run when performing file input and output. Necessary to
|
|
||||||
# ensure proper transcoding when grabbing log messages from SVN and then
|
|
||||||
# writing them back out again.
|
|
||||||
use open ':locale';
|
|
||||||
|
|
||||||
use Getopt::Long;
|
|
||||||
use XML::Parser;
|
|
||||||
use Data::Dumper;
|
|
||||||
use Cwd;
|
|
||||||
use LWP;
|
|
||||||
use File::Temp qw/ :POSIX /;
|
|
||||||
|
|
||||||
my $base_trac_url = "https://svn.open-mpi.org/trac/ompi/ticket/%d?format=csv";
|
|
||||||
my $base_svn_url = "https://svn.open-mpi.org/svn/ompi/trunk";
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Command line parsing
|
|
||||||
my @cmr_arg;
|
|
||||||
my @r_arg;
|
|
||||||
my $svn_up_arg = 1;
|
|
||||||
my $help_arg = 0;
|
|
||||||
my $dry_run_arg = 0;
|
|
||||||
|
|
||||||
&Getopt::Long::Configure("bundling");
|
|
||||||
my $ok = Getopt::Long::GetOptions("cmr|c=s" => \@cmr_arg,
|
|
||||||
"r|r=s" => \@r_arg,
|
|
||||||
"svn-up|s!" => \$svn_up_arg,
|
|
||||||
"dry-run|d!" => \$dry_run_arg,
|
|
||||||
"help|h!" => \$help_arg);
|
|
||||||
|
|
||||||
if (!$ok || $help_arg) {
|
|
||||||
print "$0 [--cmr=<list>|-c <list>] [--r=<list>|-r <list>]
|
|
||||||
[--[no-]svn-up|-s] [--dry-run|-d]
|
|
||||||
|
|
||||||
<list> is a comma-delimited list of integers.
|
|
||||||
|
|
||||||
If --dry-run is specified, 'svn up' and 'svn commit' will not be executed.
|
|
||||||
|
|
||||||
If --cmr is not specified on the command line, you will be prompted
|
|
||||||
interactively. Ditto for --r.
|
|
||||||
|
|
||||||
--no-svn-up inhibits running \"svn up\" before doing the commit.\n";
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
print "DRY RUN: no svn state-changing commands will be run\n"
|
|
||||||
if ($dry_run_arg);
|
|
||||||
|
|
||||||
# Parse the -cmr argument
|
|
||||||
my @cmrs;
|
|
||||||
if (@cmr_arg) {
|
|
||||||
foreach my $cmr (@cmr_arg) {
|
|
||||||
foreach my $c (split(/,/, $cmr)) {
|
|
||||||
push(@cmrs, $c);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Parse the -r argument
|
|
||||||
my @rs;
|
|
||||||
if (@r_arg) {
|
|
||||||
foreach my $r (@r_arg) {
|
|
||||||
foreach my $rr (split(/,/, $r)) {
|
|
||||||
$rr =~ s/^r?//;
|
|
||||||
push(@rs, $rr);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Make sure we're in an SVN tree
|
|
||||||
die "Not in a SVN tree"
|
|
||||||
if (! -d ".svn");
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# If we didn't get cmrs on the command line, prompt for them
|
|
||||||
if (!@cmrs) {
|
|
||||||
print "Enter a list of CMRs closed by this commit.\n";
|
|
||||||
while (1) {
|
|
||||||
print "\nList so far: ";
|
|
||||||
if ($#cmrs >= 0) {
|
|
||||||
print "#" . join(', #', @cmrs) . "\n";
|
|
||||||
} else {
|
|
||||||
print "<none>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print "CMR number (-1 to exit)? ";
|
|
||||||
my $cmrs = <STDIN>;
|
|
||||||
chomp($cmrs);
|
|
||||||
last
|
|
||||||
if (-1 == $cmrs);
|
|
||||||
|
|
||||||
foreach my $cmr (split(/[\s,]+/, $cmrs)) {
|
|
||||||
if ($cmr > 0) {
|
|
||||||
push(@cmrs, $cmr);
|
|
||||||
} else {
|
|
||||||
print "Invalid CMR number ($cmr); must be greater than 0 (ignored).\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print("\n");
|
|
||||||
}
|
|
||||||
if ($#cmrs < 0) {
|
|
||||||
print "Must supply at least one CMR that is closed by this commit\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
# If we didn't get r numbers on the command line, prompt for them
|
|
||||||
if (!@rs) {
|
|
||||||
print "Enter a list of SVN r numbers included in this commit.\n";
|
|
||||||
while (1) {
|
|
||||||
print "\nList so far: ";
|
|
||||||
if ($#rs >= 0) {
|
|
||||||
print "r" . join(', r', @rs) . "\n";
|
|
||||||
} else {
|
|
||||||
print "<none>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
print "SVN r number (-1 to exit)? ";
|
|
||||||
my $rs = <STDIN>;
|
|
||||||
chomp($rs);
|
|
||||||
last
|
|
||||||
if (-1 == $rs);
|
|
||||||
|
|
||||||
foreach my $r (split(/[\s,]+/, $rs)) {
|
|
||||||
$r =~ s/^r//;
|
|
||||||
if ($r > 0) {
|
|
||||||
push(@rs, $r);
|
|
||||||
} else {
|
|
||||||
print "Invalid SVN r number ($r); must be greater than 0 (ignored).\n";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
print("\n");
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Prettyprint
|
|
||||||
print "\nFinal list of CMRs closed by this commit: #" .
|
|
||||||
join(', #', @cmrs) . "\n";
|
|
||||||
print "\nFinal list of SVN r number closed by this commit: ";
|
|
||||||
if ($#rs >= 0) {
|
|
||||||
print "r" . join(', r', @rs) . "\n";
|
|
||||||
} else {
|
|
||||||
print "<none>\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Retrieve subject lines for Trac CMRs
|
|
||||||
print "Retrieving Trac CMR summaries...\n";
|
|
||||||
my $cmr_summaries;
|
|
||||||
foreach my $cmr (@cmrs) {
|
|
||||||
my $url = sprintf($base_trac_url, $cmr);
|
|
||||||
|
|
||||||
# Recent (as of 3 Aug 2011) versions of LWP in Macports seem to
|
|
||||||
# have broken SSL certificate verification. The IU CA is in my
|
|
||||||
# Mac system keychain (and has been there for quite a long time),
|
|
||||||
# but after a recent ports update, LWP fails the SSL certificate
|
|
||||||
# verification. Fine. So we'll just turn it off, per
|
|
||||||
# http://search.cpan.org/~gaas/libwww-perl-6.02/lib/LWP/UserAgent.pm.
|
|
||||||
my $ua = LWP::UserAgent->new(env_proxy => 0,
|
|
||||||
ssl_opts => { verify_hostname => 0 });
|
|
||||||
|
|
||||||
# @#$@!$# LWP proxying for https *does not work*. So don't set
|
|
||||||
# $ua->proxy() for it. Instead, rely on $ENV{https_proxy} being
|
|
||||||
# set whenever we process requests that require SSL proxying,
|
|
||||||
# because that is obeyed deep down in the innards underneath LWP.
|
|
||||||
$ua->agent("gkcommit");
|
|
||||||
|
|
||||||
my $res = $ua->get($url);
|
|
||||||
if (!$res->is_success()) {
|
|
||||||
print("Failed to download Trac ticket #" . $cmr . "\n");
|
|
||||||
print $res->status_line . "\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
my @lines = split('\n', $res->content);
|
|
||||||
my @fields = split(',', $lines[0]);
|
|
||||||
|
|
||||||
# The summary field may have a "," in it, so do the parsing with
|
|
||||||
# care. If it does, the value will be enclosed in quotes ("foo").
|
|
||||||
# If not, there will be no quotes.
|
|
||||||
my $summary = $lines[1];
|
|
||||||
$summary =~ s/^.*?,//;
|
|
||||||
if (substr($summary, 0, 1) eq '"') {
|
|
||||||
# Quotes are escaped in the string with double quotes
|
|
||||||
my $marker="===GK-COMMIT-DOUBLE-QUOTE===";
|
|
||||||
$summary =~ s/\"\"/$marker/g;
|
|
||||||
$summary =~ m/^\"(.+?)\",/;
|
|
||||||
$summary = $1;
|
|
||||||
$summary =~ s/$marker/\"/g;
|
|
||||||
} else {
|
|
||||||
$summary =~ s/(.+?),.+/\1/;
|
|
||||||
}
|
|
||||||
$cmr_summaries->{$cmr} = $summary;
|
|
||||||
}
|
|
||||||
|
|
||||||
# If we have r numbers to parse, get the SVN logs and parse them into
|
|
||||||
# a data structure
|
|
||||||
my $logentries;
|
|
||||||
my $logentry;
|
|
||||||
my $chars;
|
|
||||||
if ($#rs >= 0) {
|
|
||||||
print "Retrieving SVN log messages...\n";
|
|
||||||
my $cmd = "svn log $base_svn_url --xml ";
|
|
||||||
foreach my $r (@rs) {
|
|
||||||
$cmd .= "-r $r ";
|
|
||||||
}
|
|
||||||
print "Running: $cmd\n";
|
|
||||||
my $xml;
|
|
||||||
open(CMD, "$cmd|");
|
|
||||||
$xml .= $_
|
|
||||||
while (<CMD>);
|
|
||||||
close(CMD);
|
|
||||||
|
|
||||||
my $x = new XML::Parser(Style => 'Subs',
|
|
||||||
Handlers => { Char => \&my_char });
|
|
||||||
|
|
||||||
$x->parse($xml);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Run "svn up" just to get the tree consistent
|
|
||||||
if ($dry_run_arg) {
|
|
||||||
print "DRY RUN: skipping 'svn up' step\n";
|
|
||||||
} elsif ($svn_up_arg) {
|
|
||||||
print "Running 'svn up'...\n";
|
|
||||||
system("svn up");
|
|
||||||
} else {
|
|
||||||
print "Skipping 'svn up' step\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Create a SVN commit message for the gatekeeper
|
|
||||||
my $commit_file = File::Temp::tempnam(Cwd::cwd(), "gkcommit");
|
|
||||||
open(FILE, ">$commit_file") ||
|
|
||||||
die "Can't open temp file";
|
|
||||||
foreach my $cmr (@cmrs) {
|
|
||||||
print FILE "Fixes #$cmr: $cmr_summaries->{$cmr}\n";
|
|
||||||
}
|
|
||||||
print FILE "\n";
|
|
||||||
|
|
||||||
# If we have r numbers, print them. Use a special line to make the
|
|
||||||
# pre-commit hook ignore all of these messages (i.e., so that it
|
|
||||||
# doesn't try to close some ticket twice, or something like that).
|
|
||||||
print FILE "---svn-pre-commit-ignore-below---\n\n"
|
|
||||||
if ($#rs >= 0);
|
|
||||||
foreach my $r (@rs) {
|
|
||||||
print FILE "r$r [[BR]]
|
|
||||||
$logentries->{$r}->{msg}\n\n";
|
|
||||||
}
|
|
||||||
|
|
||||||
# Now add all the files that changes so that the gk can examine them
|
|
||||||
print "Running 'svn status'...\n";
|
|
||||||
open(SVN, "svn status|") ||
|
|
||||||
die "Can't open svn status";
|
|
||||||
print FILE "--This line, and those below, will be ignored--
|
|
||||||
|
|
||||||
****************************************************************************
|
|
||||||
GATEKEEPER: If you wish to abort this commit, delete all content from
|
|
||||||
this file, save the file, and then quit your editor as normal. The
|
|
||||||
gkcommit script will see the 0-byte file and not perform the commit.
|
|
||||||
****************************************************************************
|
|
||||||
|
|
||||||
";
|
|
||||||
|
|
||||||
while (<SVN>) {
|
|
||||||
print FILE $_;
|
|
||||||
}
|
|
||||||
close(SVN);
|
|
||||||
close(FILE);
|
|
||||||
|
|
||||||
# Now allow the gk to edit the file
|
|
||||||
if ($dry_run_arg) {
|
|
||||||
# Dry run -- just show what would have happened.
|
|
||||||
print "DRY RUN: skipping edit of this commit message:
|
|
||||||
----------------------------------------------------------------------------\n";
|
|
||||||
my $pager = "more";
|
|
||||||
$pager = $ENV{PAGER}
|
|
||||||
if ($ENV{PAGER});
|
|
||||||
system("$pager $commit_file");
|
|
||||||
print("----------------------------------------------------------------------------\n");
|
|
||||||
} else {
|
|
||||||
# Let the GK edit the file
|
|
||||||
if ($ENV{SVN_EDITOR}) {
|
|
||||||
system("$ENV{SVN_EDITOR} $commit_file");
|
|
||||||
} elsif ($ENV{EDITOR}) {
|
|
||||||
system("$ENV{EDITOR} $commit_file");
|
|
||||||
} else {
|
|
||||||
system("vi $commit_file");
|
|
||||||
}
|
|
||||||
if (! -f $commit_file) {
|
|
||||||
print "Commit file no longer exists! Aborting.\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
# Ensure that the file is >0 bytes long
|
|
||||||
if (-z $commit_file) {
|
|
||||||
print "ABORT: Commit file is 0 bytes long. Nothing committed.\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Finally, run the commit
|
|
||||||
my $cmd = "svn commit --file $commit_file " . join(' ', @ARGV);
|
|
||||||
if ($dry_run_arg) {
|
|
||||||
print "DRY RUN: skipping '$cmd' step\n";
|
|
||||||
} else {
|
|
||||||
print "Running: $cmd\n";
|
|
||||||
if (0 == system($cmd)) {
|
|
||||||
unlink($commit_file);
|
|
||||||
print "\nRunning final 'svn up' to get a stable svnversion\n";
|
|
||||||
system("svn up");
|
|
||||||
exit(0);
|
|
||||||
} else {
|
|
||||||
print "Error during SVN commit!\n";
|
|
||||||
print "GK commit message left in: $commit_file\n";
|
|
||||||
exit(1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
###########################################################################
|
|
||||||
###########################################################################
|
|
||||||
###########################################################################
|
|
||||||
# Helper functions
|
|
||||||
###########################################################################
|
|
||||||
###########################################################################
|
|
||||||
###########################################################################
|
|
||||||
|
|
||||||
# Called for the first logentry tag in the XML parsing
|
|
||||||
sub logentry {
|
|
||||||
# The beginning logentry tag has arugments of the form:
|
|
||||||
# ($expat, 'logentry', attr1, val1, attr2, val2, ...);
|
|
||||||
shift(@_);
|
|
||||||
shift(@_);
|
|
||||||
while (@_) {
|
|
||||||
my $attr = shift(@_);
|
|
||||||
my $val = shift(@_);
|
|
||||||
$logentry->{$attr} = $val;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for the last logentry tag in the XML parsing
|
|
||||||
sub logentry_ {
|
|
||||||
$logentries->{$logentry->{revision}} = $logentry;
|
|
||||||
$logentry = undef;
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for the last anchor tag in the XML parsing
|
|
||||||
sub author_ {
|
|
||||||
chomp($chars);
|
|
||||||
$chars =~ s/^\n*//;
|
|
||||||
$logentry->{author} = $chars;
|
|
||||||
$chars = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for the last date tag in the XML parsing
|
|
||||||
sub date_ {
|
|
||||||
chomp($chars);
|
|
||||||
$chars =~ s/^\n*//;
|
|
||||||
$logentry->{date} = $chars;
|
|
||||||
$chars = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for the last revision tag in the XML parsing
|
|
||||||
sub revision_ {
|
|
||||||
chomp($chars);
|
|
||||||
$chars =~ s/^\n*//;
|
|
||||||
$logentry->{revision} = $chars;
|
|
||||||
$chars = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for the last msg tag in the XML parsing
|
|
||||||
sub msg_ {
|
|
||||||
chomp($chars);
|
|
||||||
$chars =~ s/^\n*//;
|
|
||||||
$logentry->{msg} = $chars;
|
|
||||||
$chars = '';
|
|
||||||
}
|
|
||||||
|
|
||||||
# Called for general character data in XML parsing
|
|
||||||
sub my_char {
|
|
||||||
my ($expat, $tmp) = @_;
|
|
||||||
$chars .= $tmp;
|
|
||||||
}
|
|
1
contrib/dist/make_dist_tarball
поставляемый
1
contrib/dist/make_dist_tarball
поставляемый
@ -60,7 +60,6 @@ if test "`basename $0`" = "make_tarball"; then
|
|||||||
highok=1
|
highok=1
|
||||||
dirty_ok=1
|
dirty_ok=1
|
||||||
greekonly=1
|
greekonly=1
|
||||||
want_ompi=0
|
|
||||||
else
|
else
|
||||||
highok=0
|
highok=0
|
||||||
fi
|
fi
|
||||||
|
@ -293,8 +293,8 @@ rm -rf "$root"
|
|||||||
|
|
||||||
# send success mail
|
# send success mail
|
||||||
if test "$want_success_mail" = "1"; then
|
if test "$want_success_mail" = "1"; then
|
||||||
Mail -s "Create success (r$version)" "$email" <<EOF
|
Mail -s "Create success ($version)" "$email" <<EOF
|
||||||
Creating nightly snapshot SVN tarball was a success.
|
Creating nightly snapshot tarball was a success.
|
||||||
|
|
||||||
Snapshot: $version
|
Snapshot: $version
|
||||||
Start time: $start_time
|
Start time: $start_time
|
||||||
|
@ -1,44 +0,0 @@
|
|||||||
#
|
|
||||||
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
||||||
# University Research and Technology
|
|
||||||
# Corporation. All rights reserved.
|
|
||||||
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
||||||
# of Tennessee Research Foundation. All rights
|
|
||||||
# reserved.
|
|
||||||
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
||||||
# University of Stuttgart. All rights reserved.
|
|
||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
# All rights reserved.
|
|
||||||
# Copyright (c) 2008-2010 Cisco Systems, Inc. All rights reserved.
|
|
||||||
# $COPYRIGHT$
|
|
||||||
#
|
|
||||||
# Additional copyrights may follow
|
|
||||||
#
|
|
||||||
# $HEADER$
|
|
||||||
#
|
|
||||||
|
|
||||||
sources = \
|
|
||||||
ess_alps.h \
|
|
||||||
ess_alps_component.c \
|
|
||||||
ess_alps_module.c
|
|
||||||
|
|
||||||
# Make the output library in this directory, and name it either
|
|
||||||
# mca_<type>_<name>.la (for DSO builds) or libmca_<type>_<name>.la
|
|
||||||
# (for static builds).
|
|
||||||
|
|
||||||
if MCA_BUILD_orte_ess_alps_DSO
|
|
||||||
component_noinst =
|
|
||||||
component_install = mca_ess_alps.la
|
|
||||||
else
|
|
||||||
component_noinst = libmca_ess_alps.la
|
|
||||||
component_install =
|
|
||||||
endif
|
|
||||||
|
|
||||||
mcacomponentdir = $(ortelibdir)
|
|
||||||
mcacomponent_LTLIBRARIES = $(component_install)
|
|
||||||
mca_ess_alps_la_SOURCES = $(sources)
|
|
||||||
mca_ess_alps_la_LDFLAGS = -module -avoid-version
|
|
||||||
|
|
||||||
noinst_LTLIBRARIES = $(component_noinst)
|
|
||||||
libmca_ess_alps_la_SOURCES =$(sources)
|
|
||||||
libmca_ess_alps_la_LDFLAGS = -module -avoid-version
|
|
@ -1,51 +0,0 @@
|
|||||||
# -*- shell-script -*-
|
|
||||||
#
|
|
||||||
# Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
||||||
# University Research and Technology
|
|
||||||
# Corporation. All rights reserved.
|
|
||||||
# Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
||||||
# of Tennessee Research Foundation. All rights
|
|
||||||
# reserved.
|
|
||||||
# Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
||||||
# University of Stuttgart. All rights reserved.
|
|
||||||
# Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
# All rights reserved.
|
|
||||||
# Copyright (c) 2009-2012 Cisco Systems, Inc. All rights reserved.
|
|
||||||
# Copyright (c) 2011 Los Alamos National Security, LLC.
|
|
||||||
# All rights reserved.
|
|
||||||
# $COPYRIGHT$
|
|
||||||
#
|
|
||||||
# Additional copyrights may follow
|
|
||||||
#
|
|
||||||
# $HEADER$
|
|
||||||
#
|
|
||||||
|
|
||||||
# MCA_ess_alps_CONFIG([action-if-found], [action-if-not-found])
|
|
||||||
# -----------------------------------------------------------
|
|
||||||
AC_DEFUN([MCA_orte_ess_alps_CONFIG],[
|
|
||||||
AC_CONFIG_FILES([orte/mca/ess/alps/Makefile])
|
|
||||||
|
|
||||||
AC_CHECK_HEADERS([catamount/cnos_mpi_os.h],
|
|
||||||
[orte_mca_ess_alps_have_cnos=1],
|
|
||||||
[AC_CHECK_HEADERS([cnos_mpi_os.h],
|
|
||||||
[orte_mca_ess_alps_have_cnos=1],
|
|
||||||
[orte_mca_ess_alps_have_cnos=0],
|
|
||||||
[AC_INCLUDES_DEFAULT])],
|
|
||||||
[AC_INCLUDES_DEFAULT])
|
|
||||||
|
|
||||||
dnl one last check to make certain that we have all the right CNOS stuff to
|
|
||||||
dnl continue with CNOS support
|
|
||||||
AS_IF([test "$orte_mca_ess_alps_have_cnos" = "1"],
|
|
||||||
[AC_CHECK_FUNC([cnos_get_rank],
|
|
||||||
[orte_mca_ess_alps_have_cnos=1],
|
|
||||||
[orte_mca_ess_alps_have_cnos=0])])
|
|
||||||
|
|
||||||
dnl was ess alps requested?
|
|
||||||
ORTE_CHECK_ALPS([ess_alps],
|
|
||||||
[orte_mca_ess_alps_happy="yes"],
|
|
||||||
[orte_mca_ess_alps_happy="no"])
|
|
||||||
|
|
||||||
AS_IF([test "$orte_mca_ess_alps_happy" = "yes" -a "$orte_mca_ess_alps_have_cnos" = 1],
|
|
||||||
[$1],
|
|
||||||
[$2])
|
|
||||||
])dnl
|
|
@ -1,34 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2004-2008 The Trustees of Indiana University and Indiana
|
|
||||||
* University Research and Technology
|
|
||||||
* Corporation. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
||||||
* of Tennessee Research Foundation. All rights
|
|
||||||
* reserved.
|
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
||||||
* University of Stuttgart. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
* All rights reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*/
|
|
||||||
|
|
||||||
#ifndef ORTE_ESS_ALPS_H
|
|
||||||
#define ORTE_ESS_ALPS_H
|
|
||||||
|
|
||||||
BEGIN_C_DECLS
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Module open / close
|
|
||||||
*/
|
|
||||||
int orte_ess_alps_component_open(void);
|
|
||||||
int orte_ess_alps_component_close(void);
|
|
||||||
int orte_ess_alps_component_query(mca_base_module_t **module, int *priority);
|
|
||||||
|
|
||||||
|
|
||||||
END_C_DECLS
|
|
||||||
|
|
||||||
#endif /* ORTE_ESS_ALPS_H */
|
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2004-2008 The Trustees of Indiana University and Indiana
|
|
||||||
* University Research and Technology
|
|
||||||
* Corporation. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The University of Tennessee and The University
|
|
||||||
* of Tennessee Research Foundation. All rights
|
|
||||||
* reserved.
|
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
||||||
* University of Stuttgart. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
* All rights reserved.
|
|
||||||
* Copyright (c) 2011-2012 Los Alamos National Security, LLC.
|
|
||||||
* All rights reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*
|
|
||||||
* These symbols are in a file by themselves to provide nice linker
|
|
||||||
* semantics. Since linkers generally pull in symbols by object
|
|
||||||
* files, keeping these symbols as the only symbols in this file
|
|
||||||
* prevents utility programs such as "ompi_info" from having to import
|
|
||||||
* entire components just to query their version and parameters.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "orte_config.h"
|
|
||||||
#include "orte/constants.h"
|
|
||||||
|
|
||||||
#include "orte/mca/ess/ess.h"
|
|
||||||
#include "orte/mca/ess/alps/ess_alps.h"
|
|
||||||
|
|
||||||
extern orte_ess_base_module_t orte_ess_alps_module;
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Instantiate the public struct with all of our public information
|
|
||||||
* and pointers to our public functions in it
|
|
||||||
*/
|
|
||||||
orte_ess_base_component_t mca_ess_alps_component = {
|
|
||||||
/* First, the mca_component_t struct containing meta information
|
|
||||||
about the component itself */
|
|
||||||
{
|
|
||||||
ORTE_ESS_BASE_VERSION_3_0_0,
|
|
||||||
|
|
||||||
/* Component name and version */
|
|
||||||
"alps",
|
|
||||||
ORTE_MAJOR_VERSION,
|
|
||||||
ORTE_MINOR_VERSION,
|
|
||||||
ORTE_RELEASE_VERSION,
|
|
||||||
|
|
||||||
/* Component open and close functions */
|
|
||||||
orte_ess_alps_component_open,
|
|
||||||
orte_ess_alps_component_close,
|
|
||||||
orte_ess_alps_component_query
|
|
||||||
},
|
|
||||||
{
|
|
||||||
/* The component is not checkpoint ready */
|
|
||||||
MCA_BASE_METADATA_PARAM_NONE
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
int
|
|
||||||
orte_ess_alps_component_open(void)
|
|
||||||
{
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int orte_ess_alps_component_query(mca_base_module_t **module, int *priority)
|
|
||||||
{
|
|
||||||
/* we only build if CNOS support is available, so select us */
|
|
||||||
*priority = 35;
|
|
||||||
*module = (mca_base_module_t *)&orte_ess_alps_module;
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
int
|
|
||||||
orte_ess_alps_component_close(void)
|
|
||||||
{
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
@ -1,204 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana
|
|
||||||
* University Research and Technology
|
|
||||||
* Corporation. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2011 The University of Tennessee and The University
|
|
||||||
* of Tennessee Research Foundation. All rights
|
|
||||||
* reserved.
|
|
||||||
* Copyright (c) 2004-2005 High Performance Computing Center Stuttgart,
|
|
||||||
* University of Stuttgart. All rights reserved.
|
|
||||||
* Copyright (c) 2004-2005 The Regents of the University of California.
|
|
||||||
* All rights reserved.
|
|
||||||
* Copyright (c) 2011 Cisco Systems, Inc. All rights reserved.
|
|
||||||
* Copyright (c) 2011-2013 Los Alamos National Security, LLC.
|
|
||||||
* All rights reserved.
|
|
||||||
* $COPYRIGHT$
|
|
||||||
*
|
|
||||||
* Additional copyrights may follow
|
|
||||||
*
|
|
||||||
* $HEADER$
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "orte_config.h"
|
|
||||||
#include "orte/constants.h"
|
|
||||||
|
|
||||||
#if defined(HAVE_CNOS_MPI_OS_H)
|
|
||||||
#include "cnos_mpi_os.h"
|
|
||||||
#elif defined(HAVE_CATAMOUNT_CNOS_MPI_OS_H)
|
|
||||||
#include "catamount/cnos_mpi_os.h"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#include "orte/util/show_help.h"
|
|
||||||
#include "opal/util/argv.h"
|
|
||||||
|
|
||||||
#include "orte/util/proc_info.h"
|
|
||||||
#include "orte/mca/errmgr/base/base.h"
|
|
||||||
#include "orte/util/name_fns.h"
|
|
||||||
#include "orte/util/regex.h"
|
|
||||||
#include "orte/runtime/orte_globals.h"
|
|
||||||
|
|
||||||
#include "orte/mca/ess/ess.h"
|
|
||||||
#include "orte/mca/ess/base/base.h"
|
|
||||||
#include "orte/mca/ess/alps/ess_alps.h"
|
|
||||||
|
|
||||||
#include <errno.h>
|
|
||||||
|
|
||||||
static int alps_set_name(void);
|
|
||||||
static int rte_init(void);
|
|
||||||
static int rte_finalize(void);
|
|
||||||
|
|
||||||
orte_ess_base_module_t orte_ess_alps_module = {
|
|
||||||
rte_init,
|
|
||||||
rte_finalize,
|
|
||||||
orte_ess_base_app_abort,
|
|
||||||
NULL /* ft_event */
|
|
||||||
};
|
|
||||||
|
|
||||||
/* Local variables */
|
|
||||||
static orte_vpid_t starting_vpid = 0;
|
|
||||||
|
|
||||||
static int rte_init(void)
|
|
||||||
{
|
|
||||||
int ret, i;
|
|
||||||
char *error = NULL;
|
|
||||||
char **hosts = NULL;
|
|
||||||
|
|
||||||
/* run the prolog */
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_std_prolog())) {
|
|
||||||
error = "orte_ess_base_std_prolog";
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Start by getting a unique name */
|
|
||||||
alps_set_name();
|
|
||||||
|
|
||||||
/* if I am a daemon, complete my setup using the
|
|
||||||
* default procedure
|
|
||||||
*/
|
|
||||||
if (ORTE_PROC_IS_DAEMON) {
|
|
||||||
if (NULL != orte_node_regex) {
|
|
||||||
/* extract the nodes */
|
|
||||||
if (ORTE_SUCCESS != (ret =
|
|
||||||
orte_regex_extract_node_names(orte_node_regex, &hosts)) ||
|
|
||||||
NULL == hosts) {
|
|
||||||
error = "orte_regex_extract_node_names";
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* find our host in the list */
|
|
||||||
for (i=0; NULL != hosts[i]; i++) {
|
|
||||||
if (0 == strncmp(hosts[i], orte_process_info.nodename,
|
|
||||||
strlen(hosts[i]))) {
|
|
||||||
/* correct our vpid */
|
|
||||||
ORTE_PROC_MY_NAME->vpid = starting_vpid + i;
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_ess_base_framework.framework_output,
|
|
||||||
"ess:alps reset name to %s",
|
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_setup(hosts))) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
error = "orte_ess_base_orted_setup";
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
opal_argv_free(hosts);
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
if (ORTE_PROC_IS_TOOL) {
|
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_setup())) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
error = "orte_ess_base_tool_setup";
|
|
||||||
goto error;
|
|
||||||
}
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* otherwise, I must be a direct-launched application process - if
|
|
||||||
* we were selected, then PMI isn't available and we cannot
|
|
||||||
* possibly run
|
|
||||||
*/
|
|
||||||
|
|
||||||
return ORTE_ERR_NOT_SUPPORTED;
|
|
||||||
|
|
||||||
error:
|
|
||||||
if (ORTE_ERR_SILENT != ret && !orte_report_silent_errors) {
|
|
||||||
orte_show_help("help-orte-runtime.txt",
|
|
||||||
"orte_init:startup:internal-failure",
|
|
||||||
true, error, ORTE_ERROR_NAME(ret), ret);
|
|
||||||
}
|
|
||||||
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
static int rte_finalize(void)
|
|
||||||
{
|
|
||||||
int ret;
|
|
||||||
|
|
||||||
/* if I am a daemon, finalize using the default procedure */
|
|
||||||
if (ORTE_PROC_IS_DAEMON) {
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_orted_finalize())) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
} else if (ORTE_PROC_IS_TOOL) {
|
|
||||||
/* otherwise, if I am a tool proc, use that procedure */
|
|
||||||
if (ORTE_SUCCESS != (ret = orte_ess_base_tool_finalize())) {
|
|
||||||
ORTE_ERROR_LOG(ret);
|
|
||||||
}
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
||||||
|
|
||||||
static char *orte_ess_alps_jobid = NULL;
|
|
||||||
|
|
||||||
static int alps_set_name(void)
|
|
||||||
{
|
|
||||||
int rc;
|
|
||||||
orte_jobid_t jobid;
|
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_ess_base_framework.framework_output,
|
|
||||||
"ess:alps setting name"));
|
|
||||||
|
|
||||||
if (NULL == orte_ess_base_jobid) {
|
|
||||||
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
|
|
||||||
return ORTE_ERR_NOT_FOUND;
|
|
||||||
}
|
|
||||||
if (ORTE_SUCCESS != (rc = orte_util_convert_string_to_jobid(&jobid, orte_ess_base_jobid))) {
|
|
||||||
ORTE_ERROR_LOG(rc);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (NULL == orte_ess_base_vpid) {
|
|
||||||
ORTE_ERROR_LOG(ORTE_ERR_NOT_FOUND);
|
|
||||||
return ORTE_ERR_NOT_FOUND;
|
|
||||||
}
|
|
||||||
if (ORTE_SUCCESS != (rc = orte_util_convert_string_to_vpid(&starting_vpid,
|
|
||||||
orte_ess_base_vpid))) {
|
|
||||||
ORTE_ERROR_LOG(rc);
|
|
||||||
return(rc);
|
|
||||||
}
|
|
||||||
|
|
||||||
ORTE_PROC_MY_NAME->jobid = jobid;
|
|
||||||
ORTE_PROC_MY_NAME->vpid = (orte_vpid_t)cnos_get_rank() + starting_vpid;
|
|
||||||
|
|
||||||
OPAL_OUTPUT_VERBOSE((1, orte_ess_base_framework.framework_output,
|
|
||||||
"ess:alps set name to %s",
|
|
||||||
ORTE_NAME_PRINT(ORTE_PROC_MY_NAME)));
|
|
||||||
|
|
||||||
/* get the num procs as provided in the cmd line param */
|
|
||||||
if (ORTE_SUCCESS != (rc = orte_ess_env_get())) {
|
|
||||||
ORTE_ERROR_LOG(rc);
|
|
||||||
return rc;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (orte_process_info.max_procs < orte_process_info.num_procs) {
|
|
||||||
orte_process_info.max_procs = orte_process_info.num_procs;
|
|
||||||
}
|
|
||||||
|
|
||||||
return ORTE_SUCCESS;
|
|
||||||
}
|
|
Загрузка…
x
Ссылка в новой задаче
Block a user