Changeset 118 in ProjectBuilder for devel/pb/bin
- Timestamp:
- Sep 8, 2007, 3:18:32 AM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pb/bin/pb
r117 r118 306 306 307 307 chdir "$ENV{'PBBUILDDIR'}"; 308 my $made; # pkgs made during build 308 309 foreach my $pbpkg (@pkgs) { 309 310 my $vertag = $pkg->{$pbpkg}; … … 337 338 } 338 339 } 339 } elsif ($dtype eq "tgz") { 340 $made="$made $ENV{'PBBUILDDIR'}/RPMS/*/$pbpkg-$pbver-$pbtag$pbsuf.*.rpm $ENV{'PBBUILDDIR'}/SRPMS/$pbpkg-$pbver-$pbtag$pbsuf.src.rpm" 341 } elsif ($dtype eq "deb") { 342 my $tmp = "$ENV{'PBBUILDDIR'}/$pbpkg"; 343 $made="$made $tmp"."_*.deb $tmp"."_*.dsc $tmp"."_*.tar.gz" 344 } elsif ($dtype eq "ebuild") { 345 $made="$made $ENV{'PBBUILDDIR'}/portage/*/$pbpkg/$pbpkg-$pbver.ebuild" 346 pb_mkdir_p("$ENV{'PBBUILDDIR'}/portage") if (! -d "$ENV{'PBBUILDDIR'}/portage"); 347 } elsif ($dtype eq "slackware") { 340 348 pb_mkdir_p("$ENV{'PBBUILDDIR'}/install") if (! -d "$ENV{'PBBUILDDIR'}/install"); 341 } elsif ($dtype eq "ebuild") { 342 pb_mkdir_p("$ENV{'PBBUILDDIR'}/portage") if (! -d "$ENV{'PBBUILDDIR'}/portage"); 349 $made="$made $ENV{'PBBUILDDIR'}/build-$pbpkg/$pbpkg-$pbver-*-$pbtag.tgz" 343 350 } else { 344 } 345 } 351 die "Unknown dtype format $dtype"; 352 } 353 } 354 # Keep track of what is generated so that we can get them back from VMs 355 open(KEEP,"> $ENV{'PBDESTDIR'}/pbgen") || die "Unable to create $ENV{'PBBUILDDIR'}/pbgen"; 356 print KEEP "$made\n"; 357 close(KEEP); 346 358 } 347 359 … … 359 371 360 372 my $cmt = shift; 373 my $vm = shift || undef; 361 374 my $host = shift || "sshhost"; 362 375 my $login = shift || "sshlogin"; … … 364 377 my $port = shift || "sshport"; 365 378 366 my @src;367 368 379 # Get list of packages to build 369 380 my $ptr = pb_get_pkg($defpkgdir,$extpkgdir); … … 371 382 372 383 # Get the running distro to build on 373 my ($ddir, $dver, $dfam, $dtype, $pbsuf) = pb_distro_init(); 384 my ($odir,$over) = (undef, undef); 385 if (defined $vm) { 386 ($odir,$over) = split(/_/,$vm); 387 } 388 my ($ddir, $dver, $dfam, $dtype, $pbsuf) = pb_distro_init($odir,$over); 374 389 print $LOG "DEBUG: distro tuple: ".join(',',($ddir, $dver, $dfam, $dtype, $pbsuf))."\n" if ($debug >= 1); 375 390 … … 378 393 $pkg = { } if (not defined $pkg); 379 394 395 my $src = ""; 380 396 chdir "$ENV{'PBBUILDDIR'}"; 381 my $src;382 397 foreach my $pbpkg (@pkgs) { 383 398 my $vertag = $pkg->{$pbpkg}; … … 385 400 ($pbver,$pbtag) = split(/-/,$vertag); 386 401 387 if ($cmt eq "Sources") { 388 $src="$ENV{'PBDESTDIR'}/$pbpkg-$pbver.tar.gz"; 389 } elsif ($cmt eq "VMs") { 390 $src="$ENV{'PBDESTDIR'}/$pbpkg-$pbver.tar.gz $ENV{'PBDESTDIR'}/pbscript $ENV{'PBETC'}"; 391 } elsif ($cmt eq "Packages") { 392 if ($dtype eq "rpm") { 393 $src="$ENV{'PBBUILDDIR'}/RPMS/*/$pbpkg-$pbver-$pbtag$pbsuf.*.rpm $ENV{'PBBUILDDIR'}/SRPMS/$pbpkg-$pbver-$pbtag$pbsuf.src.rpm" 394 } elsif ($dtype eq "deb") { 395 my $tmp = "$ENV{'PBBUILDDIR'}/$pbpkg"; 396 $src="$tmp"."_*.deb $tmp"."_*.dsc $tmp"."_*.tar.gz" 397 } elsif ($dtype eq "ebuild") { 398 $src="$ENV{'PBBUILDDIR'}/portage/*/$pbpkg/$pbpkg-$pbver.ebuild" 399 } elsif ($dtype eq "slackware") { 400 $src="$ENV{'PBBUILDDIR'}/build-$pbpkg/$pbpkg-$pbver-*-$pbtag.tgz" 401 } else { 402 die "Unknown dtype format $dtype"; 403 } 404 # Also make a pbscript to generate yum/urpmi/apt bases 402 if (($cmt eq "Sources") || ($cmt eq "VMs")) { 403 $src="$src $ENV{'PBDESTDIR'}/$pbpkg-$pbver.tar.gz"; 404 } 405 } 406 if ($cmt eq "VMs") { 407 $src="$src $ENV{'PBDESTDIR'}/pbscript $ENV{'PBDESTDIR'}/$pbprojver-$pbprojtag.pb $ENV{'PBETC'}"; 408 } elsif ($cmt eq "Packages") { 409 # Get package list from file made during build2pkg 410 open(KEEP,"$ENV{'PBBUILDDIR'}/pbgen-$vertag") || die "Unable to read $ENV{'PBBUILDDIR'}/pbgen"; 411 my $src = <KEEP>; 412 chomp($src); 413 close(KEEP); 414 if ($dtype eq "rpm") { 415 # Also make a pbscript to generate yum/urpmi bases 405 416 # $src = "$src $ENV{'PBDESTDIR'}/pbscript" 406 } 407 push @src, $src; 408 } 409 $src = join(' ',@src); 417 } elsif ($dtype eq "deb") { 418 # Also make a pbscript to generate apt bases 419 # $src = "$src $ENV{'PBDESTDIR'}/pbscript" 420 } 421 } 422 410 423 print $LOG "$cmt: $src\n" if ($debug >= 0); 411 424 my ($sshhost,$sshlogin,$sshdir,$sshport) = pb_conf_get($host,$login,$dir,$port); … … 424 437 pb_system("ssh -q -p $port $mac \"mkdir -p $tdir ; cd $tdir ; rm -f $src\"","Preparing $tdir on $mac"); 425 438 pb_system("scp -p -P $port $src $mac:$tdir","$cmt delivery in $tdir on $mac"); 426 pb_system("ssh -q -p $port $mac \"cd $tdir ; if [ -f pbscript ]; then chmod 755 ./pbscript ; ./pbscript\"","Executing pbscript on $mac");439 pb_system("ssh -q -p $port $mac \"cd $tdir ; if [ -f pbscript ]; then ./pbscript\"; fi","Executing pbscript on $mac"); 427 440 if ($cmt eq "VMs") { 428 pb_system("scp -p -P $port $mac:$tdir/.... ...","Package recovery in $tdir from $mac"); 441 # Get back info on pkg produced, compute their name and get them from the VM 442 pb_system("scp -p -P $port $mac:$tdir/pbgen-$vertag $ENV{'PBBUILDDIR'}","Get package names in $tdir on $mac"); 443 open(KEEP,"$ENV{'PBBUILDDIR'}/pbgen-$vertag") || die "Unable to read $ENV{'PBBUILDDIR'}/pbgen-$vertag"; 444 my $src = <KEEP>; 445 chomp($src); 446 close(KEEP); 447 pb_system("scp -p -P $port $mac:$tdir/{".join(',',$src)."} $ENV{'PBBUILDDIR'}/$odir/$over","Package recovery of in $tdir from $mac"); 448 pb_send2ssh("Packages","$odir_$over"); 449 pb_rm_rf($ENV{'PBBUILDDIR'}/$odir); 429 450 } 430 451 } … … 435 456 # Prepare the script to be executed on the VM 436 457 # in $ENV{'PBDESTDIR'}/pbscript 437 # Launch the VM 438 # Gather all required files to send them to the VM 439 pb_send2ssh("VMs","vmhost","vmlogin","vmdir","vmport"); 440 458 open(SCRIPT,"> $ENV{'PBDESTDIR'}/pbscript") || die "Unable to create $ENV{'PBDESTDIR'}/pbscript"; 459 print SCRIPT "#!/bin/bash\n"; 460 print SCRIPT "# Move the copied .pbrc to the home dir on the build account\n"; 461 print SCRIPT "mv .pbrc \$ENV{'HOME'}\n"; 462 print SCRIPT "# Setup the variables required for building\n"; 463 print SCRIPT "export PBPROJ=$ENV{'PBPROJ'}\n"; 464 print SCRIPT "export PBROOT=\`pwd\`\n"; 465 print SCRIPT "# Build\n"; 466 print SCRIPT "pb build2pkg $ARGV[0]\n"; 467 close(SCRIPT); 468 chmod 0755,"$ENV{'PBDESTDIR'}/pbscript"; 469 441 470 # Send tar files when we do a global generation 442 471 pb_build2ssh() if ($all == 1); 472 473 foreach my $v (@$vm) { 474 # Launch the VMs 475 476 # Gather all required files to send them to the VM and launch the build thourgh pbscript 477 pb_send2ssh("VMs","$v","vmhost","vmlogin",dirname($pbrc->{$ENV{'PBPROJ'}}),"vmport"); 478 } 443 479 } 444 480
Note:
See TracChangeset
for help on using the changeset viewer.