mhonarc-commits
[Top] [All Lists]

CVS: devtools/bin release,1.19,1.20

2002-10-30 22:40:21
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