Update of /cvsroot/mhonarc/devtools/bin
In directory subversions:/tmp/cvs-serv1439
Modified Files:
release
Log Message:
Added -snapmode option. Still need to test it.
Index: release
===================================================================
RCS file: /cvsroot/mhonarc/devtools/bin/release,v
retrieving revision 1.19
retrieving revision 1.20
diff -C2 -r1.19 -r1.20
*** release 31 Jul 2002 04:20:14 -0000 1.19
--- release 31 Oct 2002 05:40:13 -0000 1.20
***************
*** 83,86 ****
--- 83,87 ----
'rhost=s@', # Remote hosts to co-build on
'rshprg=s', # Remote shell program (def: rsh)
+ 'snapmode', # Snapshot mode
'url=s', # URL to list in mail sent
***************
*** 142,145 ****
--- 143,149 ----
MAIL_PRG;
+ my $tar_dir = $CONFIG->{'DIST_DIRNAME'} ||
+ 'tar';
+
my $arch = $opt{'arch'};
my $create = $opt{'create'};
***************
*** 152,176 ****
my @rhosts = ();
@rhosts = @{$opt{'rhost'}} if $opt{'rhost'};
my @cvs = ('cvs', '-d', $cvsroot);
! my($version, $override) =
! determine_version($reldir, shift(@ARGV),
! $opt{'noversion-check'});
! # Force create flag to true if doing an override release
! $create = 1 if $override;
!
! my $platform = "generic";
! my $buildir = $reldir . "/$version";
! my $buildir_parent = $reldir;
! my $buildir_basename = $version;
if ($arch) {
! $platform = lc `uname -s -p`;
! $platform =~ s/\s+$//g;
! $platform =~ s/\s/-/g;
! $buildir_parent = $buildir;
$buildir_basename = $platform;
! $buildir = $buildir . "/$platform";
}
--- 156,201 ----
my @rhosts = ();
@rhosts = @{$opt{'rhost'}} if $opt{'rhost'};
+ my $snapmode = $opt{'snapmode'};
+ my($version, $override, $version_dir);
+
+ if ($snapmode) {
+ $create = 0;
+ $force_tag = 0;
+ $notlatest = 1;
+ $version = get_snap_date() . '-snap';
+ $version_dir = 'snapshot';
+ $override = 1;
+ } else {
+ ($version, $override) =
+ determine_version($reldir, shift(@ARGV),
+ $opt{'noversion-check'});
+ $version_dir = $version;
+ # Force create flag to true if doing an override release
+ $create = 1 if $override;
+ }
my @cvs = ('cvs', '-d', $cvsroot);
! my $platform = "generic";
! my $buildroot = $reldir . "/$version_dir";
! my $buildir = $buildroot;
! my $buildir_parent = $reldir;
! my $buildir_basename = $version_dir;
! my $testname = ",test-$version";
! my $testroot = $reldir . "/$testname";
! my $testdir = $testroot;
! my $testdir_parent = $reldir;
! my $testdir_basename = $testname;
if ($arch) {
! $platform = lc `uname -s -p`;
! $platform =~ s/\s+$//g;
! $platform =~ s/\s/-/g;
! $buildir_parent = $buildir;
$buildir_basename = $platform;
! $buildir = $buildir . "/$platform";
! $testdir_parent = $testdir;
! $testdir_basename = $platform;
! $testdir = $testdir . "/$platform";
}
***************
*** 205,208 ****
--- 230,236 ----
_RELEASE_VERSION => $version,
);
+ if ($snapmode) {
+ $ENV{'_SNAP_MODE'} = '1';
+ }
if ($CONFIG->{'PATH'}) {
***************
*** 223,228 ****
## Run a test build
- my $testname = ",test-$version";
- my $testdir = "$reldir/$testname";
TEST: {
if ( -e $testdir ) {
--- 251,254 ----
***************
*** 231,235 ****
}
! mk_dir($testdir) || die qq/Error: Unable to create "$testdir": $!\n/;
local $SIG{__DIE__} = sub {
system('/bin/rm', '-rf', $testdir);
--- 257,261 ----
}
! run_prg('/bin/mkdir', '-p', $testdir);
local $SIG{__DIE__} = sub {
system('/bin/rm', '-rf', $testdir);
***************
*** 237,259 ****
};
! ch_dir($reldir) || die qq/Error: Unable to chdir to "$reldir": $!\n/;
if (!$create) {
! run_prg(@cvs, 'export', '-r', $cvstag, '-d', $testname, $project);
} else {
run_prg(@cvs, 'export', '-D', scalar(localtime),
! '-d', $testname, $project);
}
- ch_dir($testname) || die qq/Error: Unable to chdir to "$testname": $!\n/;
if (@rhosts) {
foreach (@rhosts) {
! run_prg($rshprg, $_,
! qq|@makeprg -C "$testdir" |.$mk_target_release);
}
} else {
! run_prg(@makeprg, $mk_target_release);
}
ch_dir($reldir) || die qq/Error: Unable to chdir to "$reldir": $!\n/;
}
! run_prg('/bin/rm', '-rf', $testdir);
## If only testing, we are done.
--- 263,285 ----
};
! ch_dir($testdir_parent) ||
! die qq/Error: Unable to chdir to "$testdir_parent": $!\n/;
if (!$create) {
! run_prg(@cvs, 'export', '-r', $cvstag,
! '-d', $testdir_basename, $project);
} else {
run_prg(@cvs, 'export', '-D', scalar(localtime),
! '-d', $testdir_basename, $project);
}
if (@rhosts) {
foreach (@rhosts) {
! run_prg($rshprg, $_, qq|@makeprg -C "$testdir" |.$mk_target_release);
}
} else {
! run_prg(@makeprg, '-C', $testdir, $mk_target_release);
}
ch_dir($reldir) || die qq/Error: Unable to chdir to "$reldir": $!\n/;
}
! run_prg('/bin/rm', '-rf', $testroot) if ($TEST_ONLY || !$snapmode);
## If only testing, we are done.
***************
*** 271,283 ****
## Export project and make release
! run_prg('/bin/mkdir', '-p', $buildir);
! ch_dir($buildir_parent);
! run_prg('cvs', 'export', '-r', $cvstag, '-d', $buildir_basename, $project);
! if (@rhosts) {
! foreach (@rhosts) {
! run_prg($rshprg, $_, qq|@makeprg -C "$buildir" |.$mk_target_release);
! }
} else {
! run_prg(@makeprg, '-C', $buildir, $mk_target_release);
}
--- 297,316 ----
## Export project and make release
! if ($snapmode) {
! run_prg('/bin/rm', '-rf', $buildroot);
! rename($testroot, $buildroot) ||
! die qq/Error: Unable to rename "$testroot" to "$buildroot": $!\n/;
} else {
! run_prg('/bin/mkdir', '-p', $buildir);
! ch_dir($buildir_parent) ||
! die qq/Error: Unable to chdir to "$buildir_parent": $!\n/;
! run_prg(@cvs, 'export', '-r', $cvstag, '-d', $buildir_basename, $project);
! if (@rhosts) {
! foreach (@rhosts) {
! run_prg($rshprg, $_, qq|@makeprg -C "$buildir" |.$mk_target_release);
! }
! } else {
! run_prg(@makeprg, '-C', $buildir, $mk_target_release);
! }
}
***************
*** 292,302 ****
}
run_prg('/bin/rm', '-f', 'latest');
! run_prg('/bin/ln', '-s', $version, 'latest');
}
## Make tar bundle
! mk_dir('tar') unless -e 'tar';
! my $bundle = "$reldir/tar/$project-$version-$platform.tar";
! my $tarroot = "$project/$version";
$tarroot = $tarroot . "/$platform" if $arch;
--- 325,339 ----
}
run_prg('/bin/rm', '-f', 'latest');
! run_prg('/bin/ln', '-s', $version_dir, 'latest');
}
## Make tar bundle
! mk_dir($tar_dir) unless -e $tar_dir;
! if ($snapmode) {
! remove_snap_bundles($tar_dir);
! }
!
! my $bundle = "$reldir/$tar_dir/$project-$version-$platform.tar";
! my $tarroot = "$project/$version_dir";
$tarroot = $tarroot . "/$platform" if $arch;
***************
*** 305,309 ****
if ( -e $distdir ) {
run_prg('/bin/chmod', 'ug+w', $distdir);
! copy_dist_bundles($distdir, "$reldir/tar");
cmd('/bin/rm', '-rf', $distdir);
--- 342,346 ----
if ( -e $distdir ) {
run_prg('/bin/chmod', 'ug+w', $distdir);
! copy_dist_bundles($distdir, "$reldir/$tar_dir");
cmd('/bin/rm', '-rf', $distdir);
***************
*** 504,507 ****
--- 541,559 ----
}
+ #== Remove snapshot bundles from given directory
+ #=#
+ sub remove_snap_bundles {
+ my $dir = shift;
+ local(*DIR);
+ opendir(DIR, $dir) ||
+ die qq/Error: Unable to open "$dir" for reading: $!\n/;
+ my @names = grep { /\b-snap\b/i } readdir(DIR);
+ closedir(DIR);
+ if (@names) {
+ my @files = map { join('/', $dir, $_) } @names;
+ cmd('/bin/rm', '-f', @files);
+ }
+ }
+
#== Load configuration file.
#=#
***************
*** 560,563 ****
--- 612,622 ----
}
+ sub get_snap_date {
+ my($yr, $mon, $day) = (localtime(time))[5,4,3];
+ $yr += 1900;
+ ++$mon;
+ sprintf("%4d-%02d-%02d", $yr, $mon, $day);
+ }
+
############################################################################
__END__
***************
*** 792,795 ****
--- 851,859 ----
The default value is C<rsh>.
+ =item C<-snapmode>
+
+ Run in snapshot mode. Instead of doing a versioned release, a
+ release is done on the latest source within CVS.
+
=item C<-test-only>
***************
*** 846,849 ****
--- 910,917 ----
CVS_ROOT => '/home/cvs/root',
+ # Name of directory under a project's directory containing releases of
+ # the project
+ DIST_DIRNAME => 'tar',
+
# Mail program: Overridden by -mailprg option.
MAIL_PRG => '/usr/lib/sendmail -t',
***************
*** 903,906 ****
--- 971,986 ----
if it needs to know the version number when executing the makefile's
C<release> target.
+
+ If C<-snapmode> is specified, the release version will be in the
+ format C<I<YYYY-MM-DD>-snap>.
+
+ =item C<_SNAP_MODE>
+
+ Envariable set by B<release>. This variable can be referenced by
+ a project's makefile if it needs to know if it is being invoked by
+ this program with C<-snapmode>. The value of C<_SNAP_MODE> is C<1>.
+
+ B<Note:> The C<_RELEASE_VERSION> envariable will still be set to
+ C<1> when C<-snapmode> is specified.
=back
---------------------------------------------------------------------
To sign-off this list, send email to majordomo(_at_)mhonarc(_dot_)org with the
message text UNSUBSCRIBE MHONARC-DEV