Changeset 108 in ProjectBuilder for devel/pb/bin
- Timestamp:
- Sep 6, 2007, 2:18:18 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pb/bin/pb
r107 r108 21 21 22 22 # Global variables 23 use vars qw (%defpkgdir %extpkgdir %filteredfiles %pbrc $debug $LOG);24 25 23 use lib qw (lib); 26 24 use ProjectBuilder::Distribution qw (pb_distro_init); … … 41 39 my @date=(localtime->sec(), localtime->min(), localtime->hour(), localtime->mday(), localtime->mon(), localtime->year(), localtime->wday(), localtime->yday(), localtime->isdst()); 42 40 my $pbdate = strftime("%Y-%m-%d", @date); 41 my $debug = 0; 42 my $LOG = \*STDOUT; 43 43 44 44 getopts('hl:m:p:qr:tv',\%opts); … … 67 67 } 68 68 69 # Handle root of the project if defined 70 if (defined $opts{'r'}) { 71 $ENV{'PBROOT'} = $opts{'r'}; 72 } 73 # Handle virtual machines if any 74 if (defined $opts{'m'}) { 75 $ENV{'PBVM'} = $opts{'m'}; 76 } 77 69 78 # Get Action 70 79 $action = shift @ARGV; 71 80 die pb_syntax() if (not defined $action); 72 81 73 # Handle root of the project if defined 74 if (defined $opts{'r'}) { 75 $ENV{'PBROOT'} = $opts{'r'}; 76 } 77 # Handle virtual machines if any 78 if (defined $opts{'m'}) { 79 $ENV{'PBVM'} = $opts{'m'}; 80 } 82 my ($pbrc, $filteredfiles, $defpkgdir, $extpkgdir); 83 81 84 # Handles project name if any 85 # And get global params 82 86 if (defined $opts{'p'}) { 83 87 ($ENV{'PBPROJ'},$debug,$LOG, $pbrc, $filteredfiles, $defpkgdir, $extpkgdir) … … 87 91 = pb_env_init(); 88 92 } 89 90 print $LOG "Project $ENV{'PBPROJ'}\n" if ($debug >= 0); 93 my %pbrc = %$pbrc; 94 my %filteredfiles = %$filteredfiles; 95 my %defpkgdir = %$defpkgdir; 96 my %extpkgdir = %$extpkgdir; 97 98 print $LOG "Project: $ENV{'PBPROJ'}\n" if ($debug >= 0); 91 99 print $LOG "Action: $action\n" if ($debug >= 0); 92 100 … … 125 133 sub pb_cms2build { 126 134 127 my $ptr = pb_get_pkg( );135 my $ptr = pb_get_pkg(\%defpkgdir,\%extpkgdir); 128 136 @pkgs = @$ptr; 129 137 my $cms=pb_cms_init($ENV{'PBPROJ'},$pbdate); … … 224 232 if (defined $ptr) { 225 233 foreach my $f (values %bfiles) { 226 pb_filter_file_pb("$ENV{'PBROOT'}/$f",$ptr,"$dest/pbconf/$ddir-$dver/".basename($f),$dtype,$pbsuf,$pbpkg,$pbver,$pbtag,$pbrev,$pbdate );234 pb_filter_file_pb("$ENV{'PBROOT'}/$f",$ptr,"$dest/pbconf/$ddir-$dver/".basename($f),$dtype,$pbsuf,$pbpkg,$pbver,$pbtag,$pbrev,$pbdate,\%defpkgdir,\%extpkgdir); 227 235 } 228 236 if (defined $filteredfiles{$pbpkg}) { … … 245 253 # Prepare the dest directory for archive 246 254 if (-x "$ENV{'PBCONF'}/$pbpkg/pbinit") { 247 pb_system("cd $dest ; $ENV{'PBCONF'}/$pbpkg/pbinit","Executing init script $ENV{'PBCONF'}/$pbpkg/pbinit"); 255 #pb_system("cd $dest ; $ENV{'PBCONF'}/$pbpkg/pbinit","Executing init script $ENV{'PBCONF'}/$pbpkg/pbinit"); 256 print $LOG "Executing init script $ENV{'PBCONF'}/$pbpkg/pbinit\n"; 257 system("cd $dest ; $ENV{'PBCONF'}/$pbpkg/pbinit"); 248 258 } 249 259 … … 283 293 284 294 # Get list of packages to build 285 my $ptr = pb_get_pkg( );295 my $ptr = pb_get_pkg(\%defpkgdir,\%extpkgdir); 286 296 @pkgs = @$ptr; 287 297 … … 343 353 } 344 354 355 # By default deliver to the the public site hosting the 356 # ftp structure (or whatever) or a VM 345 357 sub pb_send2ssh { 346 358 347 359 my $cmt = shift; 360 my $host = shift || "sshhost"; 361 my $login = shift || "sshlogin"; 362 my $dir = shift || "sshdir"; 363 my $port = shift || "sshport"; 348 364 349 365 my @src; 350 366 351 367 # Get list of packages to build 352 my $ptr = pb_get_pkg( );368 my $ptr = pb_get_pkg(\%defpkgdir,\%extpkgdir); 353 369 @pkgs = @$ptr; 354 370 … … 370 386 if ($cmt eq "Sources") { 371 387 $src="$ENV{'PBDESTDIR'}/$pbpkg-$pbver.tar.gz"; 388 } elsif ($cmt eq "VMs") { 389 $src="$ENV{'PBDESTDIR'}/$pbpkg-$pbver.tar.gz $ENV{'PBDESTDIR'}/pbscript $ENV{'PBETC'}"; 372 390 } elsif ($cmt eq "Packages") { 373 391 if ($dtype eq "rpm") { … … 383 401 die "Unknown dtype format $dtype"; 384 402 } 403 # Also make a pbscript to generate yum/urpmi/apt bases 404 # $src = "$src $ENV{'PBDESTDIR'}/pbscript" 385 405 } 386 406 print $LOG "$cmt: $src\n" if ($debug >= 0); 387 407 push @src, $src; 388 408 } 389 my ($sshhost,$sshlogin,$sshdir ) = pb_conf_get("sshhost", "sshlogin", "sshdir");409 my ($sshhost,$sshlogin,$sshdir,$sshport) = pb_conf_get($host,$login,$dir,$port); 390 410 my $mac = "$sshlogin->{$ENV{'PBPROJ'}}\@$sshhost->{$ENV{'PBPROJ'}}"; 391 my $ dir;411 my $tdir; 392 412 if ($cmt eq "Sources") { 393 $dir = "$sshdir->{$ENV{'PBPROJ'}}/src"; 413 $tdir = "$sshdir->{$ENV{'PBPROJ'}}/src"; 414 } elsif ($cmt eq "VMs") { 415 $tdir = "$sshdir->{$ENV{'PBPROJ'}}"; 394 416 } elsif ($cmt eq "Packages") { 395 $ dir = "$sshdir->{$ENV{'PBPROJ'}}/$ddir/$dver";417 $tdir = "$sshdir->{$ENV{'PBPROJ'}}/$ddir/$dver"; 396 418 } else { 397 419 return; 398 420 } 399 421 $src = join(' ',@src); 400 pb_system("ssh -q $mac \"mkdir -p $dir ; cd $dir ; rm -f $src\"","Preparing $dir on $mac"); 401 pb_system("scp -p $src $mac:$dir","$cmt delivery in $dir on $mac"); 422 pb_system("ssh -q $mac \"mkdir -p $tdir ; cd $tdir ; rm -f $src\"","Preparing $tdir on $mac"); 423 pb_system("scp -p -P $sshport $src $mac:$tdir","$cmt delivery in $tdir on $mac"); 424 pb_system("ssh -q $mac \"cd $tdir ; if [-f pbscript]; then chmod 755 ./pbscript ; ./pbscript\"","Executing pbscript on $mac"); 425 if ($cmt eq "VMs") { 426 pb_system("scp -p -P $sshport $mac:$tdir/.... ...","Package recovery in $tdir from $mac"); 427 } 402 428 } 403 429 … … 405 431 my ($vm,$all) = pb_get_vm(); 406 432 433 # Prepare the script to be executed on the VM 434 # in $ENV{'PBDESTDIR'}/pbscript 435 # Launch the VM 436 # Gather all required files to send them to the VM 437 pb_send2ssh("VMs","vmhost","vmlogin","vmdir","vmport"); 438 407 439 # Send tar files when we do a global generation 408 440 pb_build2ssh() if ($all == 1); … … 412 444 413 445 my @pkgs; 446 my $defpkgdir = shift; 447 my $extpkgdir = shift; 448 449 my %defpkgdir = %$defpkgdir; 450 my %extpkgdir = %$extpkgdir; 414 451 415 452 # Get packages list … … 418 455 } elsif ($ARGV[0] =~ /^all$/) { 419 456 @pkgs = keys %defpkgdir; 420 if (defined %extpkgdir) { 421 my $k = keys %extpkgdir; 422 if (defined $k) { 423 push(@pkgs, keys %extpkgdir); 424 } 425 } 457 push(@pkgs, keys %extpkgdir); 426 458 } else { 427 459 @pkgs = @ARGV; … … 443 475 # Get VM list 444 476 if ((not defined $ENV{'PBVM'}) || ($ENV{'PBVM'} =~ /^all$/)) { 445 my $ptr= pb_conf_get("vmlist");477 my ($ptr) = pb_conf_get("vmlist"); 446 478 $ENV{'PBVM'} = $ptr->{$ENV{'PBPROJ'}}; 447 479 $all = 1; 448 480 } 449 481 @vm = split(/,/,$ENV{'PBVM'}); 450 print $LOG "VMs: ".join(',',@vm)."\n" if ($debug >= 0);482 print $LOG "VMs: ".join(',',@vm)."\n"; 451 483 return(\@vm,$all); 452 484 }
Note:
See TracChangeset
for help on using the changeset viewer.