Changeset 17 in ProjectBuilder for devel/pb/bin
- Timestamp:
- Jul 30, 2007, 8:03:52 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pb/bin/pb.pl
r16 r17 17 17 use AppConfig qw(:argcount :expand); 18 18 use File::Basename; 19 use Archive::Tar; 19 20 use Time::localtime qw(localtime); 20 21 use POSIX qw(strftime); 21 22 22 use lib qw (lib etc);23 use vars qw (%defpkgdir %extpkgdir %version @filteredfiles);23 use lib qw (lib); 24 use vars qw (%defpkgdir %extpkgdir %version %param %filteredfiles); 24 25 use common qw (env_init); 25 use pb qw (defpkgdir extpkgdir version filteredfiles pb_init);26 use pb qw (defpkgdir extpkgdir version param filteredfiles pb_init); 26 27 use distro qw (distro_init); 27 28 use cms; 29 use changelog qw (changelog); 28 30 29 31 my %opts; # CLI Options … … 76 78 cms_init(); 77 79 78 foreach my $p (@pkgs) {79 80 if (-f "$ENV{'PBROOT'}/$p /VERSION") {81 open(V,"$ENV{'PBROOT'}/$p /VERSION") || die "Unable to open $ENV{'PBROOT'}/$p/VERSION";80 foreach my $pkg (@pkgs) { 81 82 if (-f "$ENV{'PBROOT'}/$pkg/VERSION") { 83 open(V,"$ENV{'PBROOT'}/$pkg/VERSION") || die "Unable to open $ENV{'PBROOT'}/$pkg/VERSION"; 82 84 $pbver = <V>; 83 85 chomp($pbver); … … 87 89 } 88 90 89 if (-f "$ENV{'PBROOT'}/$p /TAG") {90 open(T,"$ENV{'PBROOT'}/$p /TAG") || die "Unable to open $ENV{'PBROOT'}/$p/TAG";91 if (-f "$ENV{'PBROOT'}/$pkg/TAG") { 92 open(T,"$ENV{'PBROOT'}/$pkg/TAG") || die "Unable to open $ENV{'PBROOT'}/$pkg/TAG"; 91 93 $pbtag = <T>; 92 94 chomp($pbtag); … … 96 98 } 97 99 $pbrev = $ENV{'PBREVISION'}; 98 print "Management of $p $pbver-$pbtag (rev $pbrev)\n";100 print "Management of $pkg $pbver-$pbtag (rev $pbrev)\n"; 99 101 die "Unable to get env var PBDESTDIR" if (not defined $ENV{'PBDESTDIR'}); 100 102 # Clean up dest if necessary. The export will recreate it 101 my $dest = "$ENV{'PBDESTDIR'}/$p -$pbver";103 my $dest = "$ENV{'PBDESTDIR'}/$pkg-$pbver"; 102 104 pbrm_rf($dest) if (-d $dest); 103 105 … … 105 107 # And generate some additional files 106 108 $OUTPUT_AUTOFLUSH=1; 107 print "$ENV{'PBCMSEXP'} of $p ...";109 print "$ENV{'PBCMSEXP'} of $pkg..."; 108 110 # computes in which dir we have to work 109 my $dir = $defpkgdir{$p };110 $dir = $extpkgdir{$p } if (not defined $dir);111 my $dir = $defpkgdir{$pkg}; 112 $dir = $extpkgdir{$pkg} if (not defined $dir); 111 113 system("$ENV{'PBCMSEXP'} $option $ENV{'PBROOT'}/$dir $dest 1>/dev/null"); 112 114 if ($? == -1) { … … 125 127 # Extract cms log history and store it 126 128 system("$ENV{'PBCMSLOG'} $option $ENV{'PBROOT'}/$dir > $dest/$ENV{'PBCMSLOGFILE'}"); 127 print "$ENV{'PBCMSLOG'} of $p ...";129 print "$ENV{'PBCMSLOG'} of $pkg..."; 128 130 if ($? == -1) { 129 131 print "failed to execute: $!\n"; … … 148 150 # Find all build files first relatively to PBROOT 149 151 my %bfiles; 150 #print "dir: $ENV{'PBCONF'}/$p \n";151 if (-d "$ENV{'PBCONF'}/$p /$dtype") {152 opendir(BDIR,"$ENV{'PBCONF'}/$p /$dtype" || die "Unable to open dir $ENV{'PBCONF'}/$p/$dtype: $!");152 #print "dir: $ENV{'PBCONF'}/$pkg\n"; 153 if (-d "$ENV{'PBCONF'}/$pkg/$dtype") { 154 opendir(BDIR,"$ENV{'PBCONF'}/$pkg/$dtype" || die "Unable to open dir $ENV{'PBCONF'}/$pkg/$dtype: $!"); 153 155 foreach my $f (readdir(BDIR)) { 154 156 next if ($f =~ /^\./); 155 $bfiles{$f} = "$ENV{'PBCONF'}/$p /$dtype/$f";157 $bfiles{$f} = "$ENV{'PBCONF'}/$pkg/$dtype/$f"; 156 158 $bfiles{$f} =~ s~$ENV{'PBROOT'}~~; 157 159 } 158 160 closedir(BDIR); 159 } elsif (-d "$ENV{'PBCONF'}/$p /$dfam") {160 opendir(BDIR,"$ENV{'PBCONF'}/$p /$dfam" || die "Unable to open dir $ENV{'PBCONF'}/$p/$dfam: $!");161 } elsif (-d "$ENV{'PBCONF'}/$pkg/$dfam") { 162 opendir(BDIR,"$ENV{'PBCONF'}/$pkg/$dfam" || die "Unable to open dir $ENV{'PBCONF'}/$pkg/$dfam: $!"); 161 163 foreach my $f (readdir(BDIR)) { 162 164 next if ($f =~ /^\./); 163 $bfiles{$f} = "$ENV{'PBCONF'}/$p /$dfam/$f";165 $bfiles{$f} = "$ENV{'PBCONF'}/$pkg/$dfam/$f"; 164 166 $bfiles{$f} =~ s~$ENV{'PBROOT'}~~; 165 167 } 166 168 closedir(BDIR); 167 } elsif (-d "$ENV{'PBCONF'}/$p /$ddir") {168 opendir(BDIR,"$ENV{'PBCONF'}/$p /$ddir" || die "Unable to open dir $ENV{'PBCONF'}/$p/$ddir: $!");169 } elsif (-d "$ENV{'PBCONF'}/$pkg/$ddir") { 170 opendir(BDIR,"$ENV{'PBCONF'}/$pkg/$ddir" || die "Unable to open dir $ENV{'PBCONF'}/$pkg/$ddir: $!"); 169 171 foreach my $f (readdir(BDIR)) { 170 172 next if ($f =~ /^\./); 171 $bfiles{$f} = "$ENV{'PBCONF'}/$p /$ddir/$f";173 $bfiles{$f} = "$ENV{'PBCONF'}/$pkg/$ddir/$f"; 172 174 $bfiles{$f} =~ s~$ENV{'PBROOT'}~~; 173 175 } 174 176 closedir(BDIR); 175 } elsif (-d "$ENV{'PBCONF'}/$p /$ddir-$dver") {176 opendir(BDIR,"$ENV{'PBCONF'}/$p /$ddir-$dver" || die "Unable to open dir $ENV{'PBCONF'}/$p/$ddir-$dver: $!");177 } elsif (-d "$ENV{'PBCONF'}/$pkg/$ddir-$dver") { 178 opendir(BDIR,"$ENV{'PBCONF'}/$pkg/$ddir-$dver" || die "Unable to open dir $ENV{'PBCONF'}/$pkg/$ddir-$dver: $!"); 177 179 foreach my $f (readdir(BDIR)) { 178 180 next if ($f =~ /^\./); 179 $bfiles{$f} = "$ENV{'PBCONF'}/$p /$ddir-$dver/$f";181 $bfiles{$f} = "$ENV{'PBCONF'}/$pkg/$ddir-$dver/$f"; 180 182 $bfiles{$f} =~ s~$ENV{'PBROOT'}~~; 181 183 } … … 192 194 my @ffiles; 193 195 my ($ffile0, $ffile1, $ffile2, $ffile3); 194 if (-d "$ENV{'PBCONF'}/$p /pbfilter") {195 $ffile0 = "$ENV{'PBCONF'}/$p /pbfilter/$dtype.pbf" if (-f "$ENV{'PBCONF'}/$p/pbfilter/$dtype.pbf");196 $ffile1 = "$ENV{'PBCONF'}/$p /pbfilter/$dfam.pbf" if (-f "$ENV{'PBCONF'}/$p/pbfilter/$dfam.pbf");197 $ffile2 = "$ENV{'PBCONF'}/$p /pbfilter/$ddir.pbf" if (-f "$ENV{'PBCONF'}/$p/pbfilter/$ddir.pbf");198 $ffile3 = "$ENV{'PBCONF'}/$p /pbfilter/$ddir-$dver.pbf" if (-f "$ENV{'PBCONF'}/$p/pbfilter/$ddir-$dver.pbf");196 if (-d "$ENV{'PBCONF'}/$pkg/pbfilter") { 197 $ffile0 = "$ENV{'PBCONF'}/$pkg/pbfilter/$dtype.pbf" if (-f "$ENV{'PBCONF'}/$pkg/pbfilter/$dtype.pbf"); 198 $ffile1 = "$ENV{'PBCONF'}/$pkg/pbfilter/$dfam.pbf" if (-f "$ENV{'PBCONF'}/$pkg/pbfilter/$dfam.pbf"); 199 $ffile2 = "$ENV{'PBCONF'}/$pkg/pbfilter/$ddir.pbf" if (-f "$ENV{'PBCONF'}/$pkg/pbfilter/$ddir.pbf"); 200 $ffile3 = "$ENV{'PBCONF'}/$pkg/pbfilter/$ddir-$dver.pbf" if (-f "$ENV{'PBCONF'}/$pkg/pbfilter/$ddir-$dver.pbf"); 199 201 push @ffiles,$ffile0 if (defined $ffile0); 200 202 push @ffiles,$ffile1 if (defined $ffile1); … … 222 224 if (defined $ptr) { 223 225 foreach my $f (values %bfiles) { 224 filter_file($f,$ptr,"$dest/pbconf/$ddir-$dver/".basename($f) );226 filter_file($f,$ptr,"$dest/pbconf/$ddir-$dver/".basename($f),$pkg,$dtype,$dsuf); 225 227 } 226 foreach my $f ( @filteredfiles) {227 filter_file($f,$ptr,"$dest/$f" );228 foreach my $f (keys %filteredfiles) { 229 filter_file($f,$ptr,"$dest/$f",$pkg,$dtype,$dsuf); 228 230 } 229 231 } 232 } 233 # Prepare the dest directory for archive 234 if (-x "$ENV{'PBCONF'}/$pkg/pbpkginit") { 235 system("cd $dest ; $ENV{'PBCONF'}/$pkg/pbinit"); 236 if ($? == -1) { 237 print "failed to execute: $!\n"; 238 } elsif ($? & 127) { 239 printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; 240 } else { 241 print " $dest\n"; 242 } 243 } 244 # Archive dest dir 245 chdir "$dest/.."; 246 print "Creating $pkg tar files (gzip... "; 247 system("tar cfphz $pkg-$pbver.tar.gz $pkg-$pbver"); 248 if ($? == -1) { 249 print "failed to execute: $!\n"; 250 } elsif ($? & 127) { 251 printf "child died with signal %d, %s coredump\n", ($? & 127), ($? & 128) ? 'with' : 'without'; 252 } else { 253 print " OK)\n"; 254 print "Under $dest/../$pkg-$pbver.tar.gz\n"; 230 255 } 231 256 } … … 238 263 } 239 264 265 # Function which applies filter on files 240 266 sub filter_file { 241 267 … … 244 270 my %filter=%$ptr; 245 271 my $destfile=shift; 272 my $pkg=shift; 273 my $dtype=shift; 274 my $dsuf=shift; 246 275 247 276 print "From $f to $destfile\n"; … … 259 288 if ($tmp =~ /\$/) { 260 289 eval { $tmp =~ s/(\$\w+)/$1/eeg }; 290 # special case for ChangeLog 291 } elsif (($tmp =~ /^yes$/) && ($s =~ /^PBLOG$/)) { 292 $tmp = changelog($dtype, $pkg, $pbtag, $dsuf, \*DEST); 261 293 } 262 294 $line =~ s|$s|$tmp|; 263 295 } 264 296 print DEST $line; 265 297 } 266 298 close(FILE); 267 299 close(DEST);
Note:
See TracChangeset
for help on using the changeset viewer.