- Timestamp:
- Sep 6, 2007, 2:18:18 AM (17 years ago)
- Location:
- devel/pb
- Files:
-
- 4 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 } -
devel/pb/lib/ProjectBuilder/Base.pm
r107 r108 44 44 print "DEBUG pbrc: ".Dumper($pbrc)."\n" if ($debug >= 1); 45 45 46 %pbrc = %$pbrc;46 my %pbrc = %$pbrc; 47 47 if (not defined $proj) { 48 48 # Take the first as the default project … … 56 56 # 57 57 my $topdir=dirname($pbrc{$proj}); 58 # Expand potential env variable in it 59 eval { $topdir =~ s/(\$ENV.+\})/$1/eeg }; 58 60 chdir $topdir || die "Unable to change directory to $topdir"; 61 $pbrc{$proj} = $topdir."/pbrc"; 59 62 $ENV{'PBDESTDIR'}=$topdir."/delivery"; 60 63 … … 80 83 81 84 my %version = (); 85 my %defpkgdir = (); 86 my %extpkgdir = (); 87 my %filteredfiles = (); 82 88 83 89 if (-f "$ENV{'PBCONF'}/$proj.pb") { … … 95 101 %defpkgdir = %$defpkgdir; 96 102 # Global 97 %extpkgdir = ();98 103 %extpkgdir = %$defpkgdir if (defined $defpkgdir); 99 %version = ();100 104 %version = %$version if (defined $version); 101 105 # Global 102 %filteredfiles = ();103 106 %filteredfiles = %$filteredfiles if (defined $filteredfiles); 104 107 # … … 185 188 my $cmt=shift || $cmd; 186 189 187 print $LOG"$cmt... ";190 print "$cmt... "; 188 191 system("$cmd 2>&1 > $ENV{'PBTMP'}/system.log"); 189 192 if ($? == -1) { 190 print $LOG "failed to execute ($cmd) : $!\n" if ($debug >= 0);193 print "failed to execute ($cmd) : $!\n"; 191 194 pb_display_file("$ENV{'PBTMP'}/system.log"); 192 195 } elsif ($? & 127) { 193 printf $LOG "child ($cmd) died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without' if ($debug >= 0);196 printf "child ($cmd) died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; 194 197 pb_display_file("$ENV{'PBTMP'}/system.log"); 195 198 } elsif ($? == 0) { 196 print $LOG "OK\n" if ($debug >= 0);199 print "OK\n"; 197 200 } else { 198 201 printf "child ($cmd) exited with value %d\n", $? >> 8; … … 207 210 open(FILE,"$file") || die "Unable to open $file"; 208 211 while (<FILE>) { 209 print $ LOG;212 print $_; 210 213 } 211 214 close(FILE); … … 227 230 die "No $param[$i] defined for $ENV{'PBPROJ'}" if (not defined $p->{$ENV{'PBPROJ'}}); 228 231 } 229 print "DEBUG: param: ".Dumper(@ptr)."\n" if ($debug >= 1);232 #print "DEBUG: param: ".Dumper(@ptr)."\n" if ($debug >= 1); 230 233 return(@ptr); 231 234 } … … 239 242 my $trace; 240 243 my @ptr; 244 245 my $debug = 0; 241 246 242 247 if ($debug > 0) { … … 299 304 my $cms = shift; 300 305 my $pbdate = shift || undef; 301 my $ pkgdir= shift;306 my $source = shift; 302 307 my $destdir = shift; 308 my $tmp; 303 309 304 310 if ($cms->{$ENV{'PBPROJ'}} eq "svn") { 305 pb_system("svn export $pkgdir $destdir","Exporting $pkgdir from SVN"); 311 if (-d $source) { 312 $tmp = $destdir; 313 } else { 314 $tmp = $destdir."/".basename($source); 315 } 316 pb_system("svn export $source $tmp","Exporting $source from SVN"); 306 317 } elsif ($cms->{$ENV{'PBPROJ'}} eq "cvs") { 307 318 my $dir=dirname($destdir); 308 319 my $base=basename($destdir); 309 my $tmp=basename($pkgdir); 320 # Doesn't work if called from outside with a full path name to a file/dir to export 321 $tmp=basename($source); 310 322 # CVS needs a relative path ! 311 pb_system("cd $dir ; cvs export -D $pbdate -d $base $tmp","Exporting $ pkgdirfrom CVS");323 pb_system("cd $dir ; cvs export -D $pbdate -d $base $tmp","Exporting $source from CVS"); 312 324 } else { 313 325 die "cms $cms->{$ENV{'PBPROJ'}} unknown"; … … 338 350 339 351 sub pb_get_filters { 352 353 # For the moment not dynamic 354 my $debug = 0; # Debug level 355 my $LOG = *STDOUT; # Where to log 340 356 341 357 my @ffiles; … … 397 413 my $pbrev=shift; 398 414 my $pbdate=shift; 415 my $defpkgdir = shift; 416 my $extpkgdir = shift; 417 418 # For the moment not dynamic 419 my $debug = 0; # Debug level 420 my $LOG = *STDOUT; # Where to log 399 421 400 422 print $LOG "DEBUG: From $f to $destfile\n" if ($debug >= 1); … … 416 438 } elsif (($tmp =~ /^yes$/) && ($s =~ /^PBLOG$/) && ($line =~ /^PBLOG$/)) { 417 439 $tmp = ""; 418 my $p = $defpkgdir {$pbpkg};419 $p = $extpkgdir {$pbpkg} if (not defined $p);440 my $p = $defpkgdir->{$pbpkg}; 441 $p = $extpkgdir->{$pbpkg} if (not defined $p); 420 442 pb_changelog($dtype, $pbpkg, $pbtag, $pbsuf, $p, \*DEST); 421 443 } … … 441 463 my $pbrev=shift; 442 464 my $pbdate=shift; 465 466 # For the moment not dynamic 467 my $debug = 0; # Debug level 468 my $LOG = *STDOUT; # Where to log 443 469 444 470 print $LOG "DEBUG: From $f to $destfile\n" if ($debug >= 1); -
devel/pb/lib/ProjectBuilder/Changelog.pm
r89 r108 35 35 my $chglog = "$ENV{'PBROOT'}/$path/ChangeLog"; 36 36 if (! -f $chglog) { 37 print " Unable to find the ChangeLog file ($chglog) for $pkg\n" if ($debug >= 0);37 print "No ChangeLog file ($chglog) for $pkg\n"; 38 38 return("\n"); 39 39 } -
devel/pb/lib/ProjectBuilder/Distribution.pm
r74 r108 194 194 my $found = 0; 195 195 my $ptr = $distro_similar{$d}; 196 print $LOG "amb: ".Dumper($ptr)."\n" if ($debug >= 1);196 #print $LOG "amb: ".Dumper($ptr)."\n" if ($debug >= 1); 197 197 $release = "unknown"; 198 198 foreach my $dd (@$ptr) { 199 print $LOG "check $dd\n" if ($debug >= 1);199 #print $LOG "check $dd\n" if ($debug >= 1); 200 200 # Try to check pattern 201 201 if (defined $distro_match{$dd}) { 202 print $LOG "cmp: $distro_match{$dd} - vs - $tmp\n" if ($debug >= 1);202 #print $LOG "cmp: $distro_match{$dd} - vs - $tmp\n" if ($debug >= 1); 203 203 ($release) = $tmp =~ m/$distro_match{$dd}/m; 204 204 if ((defined $release) && ($release ne "unknown")) {
Note:
See TracChangeset
for help on using the changeset viewer.