Changeset 500 in ProjectBuilder for devel/pb/bin
- Timestamp:
- Aug 3, 2008, 1:20:30 PM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
devel/pb/bin/pb
r499 r500 521 521 my @pt; 522 522 my $tmpl = ""; 523 my @patches = ();523 my %patches; 524 524 525 525 @pt = pb_conf_get_if("vmlist","velist"); … … 547 547 $pb{'proj'} = $ENV{'PBPROJ'}; 548 548 $pb{'repo'} = $ENV{'PBREPO'}; 549 $pb{'patches'} = \%patches; 550 pb_log(2,"DEBUG: pb: ".Dumper(%pb)."\n"); 549 551 550 552 foreach my $d (split(/,/,$tmpl)) { … … 563 565 my %bfiles = (); 564 566 my %pkgfiles = (); 565 $build{"$ddir-$dver "} = "yes";567 $build{"$ddir-$dver-$arch"} = "yes"; 566 568 567 569 if (-d "$ENV{'PBROOTDIR'}/$pbpkg/$pb{'dtype'}") { … … 573 575 } elsif (-d "$ENV{'PBROOTDIR'}/$pbpkg/$ddir-$dver") { 574 576 pb_list_bfiles("$ENV{'PBROOTDIR'}/$pbpkg/$ddir-$dver",$pbpkg,\%bfiles,\%pkgfiles,$supfiles); 577 } elsif (-d "$ENV{'PBROOTDIR'}/$pbpkg/$ddir-$dver-$arch") { 578 pb_list_bfiles("$ENV{'PBROOTDIR'}/$pbpkg/$ddir-$dver-$arch",$pbpkg,\%bfiles,\%pkgfiles,$supfiles); 575 579 } else { 576 $build{"$ddir-$dver "} = "no";580 $build{"$ddir-$dver-$arch"} = "no"; 577 581 next; 578 582 } … … 582 586 my $ptr = pb_get_filters($pbpkg, $pb{'dtype'}, $dfam, $ddir, $dver); 583 587 584 # Prepare patches for this distro588 # Prepare local patches for this distro - They are always applied first - May be a problem one day 585 589 foreach my $p (sort(<$ENV{'PBROOTDIR'}/$pbpkg/pbpatch/*>)) { 586 push @patches,$p if ($p =~ /\.all$/); 587 push @patches,$p if ($p =~ /\.$pb{'dtype'}$/); 588 push @patches,$p if ($p =~ /\.$dfam$/); 589 push @patches,$p if ($p =~ /\.$ddir$/); 590 push @patches,$p if ($p =~ /\.$ddir-$dver$/); 591 } 592 $pb{'patches'} = \@patches; 590 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.all$/)); 591 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.all$/); 592 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.$pb{'dtype'}$/)); 593 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.$pb{'dtype'}$/); 594 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.$dfam$/)); 595 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.$dfam$/); 596 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.$ddir$/)); 597 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.$ddir$/); 598 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.$ddir-$dver$/)); 599 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.$ddir-$dver$/); 600 $patches{"$ddir-$dver-$arch"} .= "," if ((defined $patches{"$ddir-$dver-$arch"}) and ($p =~ /\.$ddir-$dver-$arch$/)); 601 $patches{"$ddir-$dver-$arch"} .= "file://$p" if ($p =~ /\.$ddir-$dver-$arch$/); 602 } 603 604 # Prepare also remote patches to be included - Applied after the local ones 605 foreach my $p ("all","$pb{'dtype'}","$dfam","$ddir","$ddir-$dver","$ddir-$dver-$arch") { 606 my $f = "$ENV{'PBROOTDIR'}/$pbpkg/pbextpatch.$p"; 607 next if (not -f $f); 608 if (not open(PATCH,$f)) { 609 pb_display("Unable to open existing external patch file content $f\n"); 610 next; 611 } 612 while (<PATCH>) { 613 chomp(); 614 $patches{"$ddir-$dver-$arch"} .= "," if (defined $patches{"$ddir-$dver-$arch"}); 615 $patches{"$ddir-$dver-$arch"} .= "$_"; 616 } 617 close(PATCH); 618 } 619 pb_log(2,"DEBUG: pb->patches: ".Dumper($pb{'patches'})."\n"); 593 620 594 621 # Apply now all the filters on all the files concerned 595 622 # destination dir depends on the type of file 596 623 if (defined $ptr) { 624 # For patch support 625 $pb{'tuple'} = "$ddir-$dver-$arch"; 597 626 foreach my $f (values %bfiles,values %pkgfiles) { 598 pb_filter_file("$ENV{'PBROOTDIR'}/$f",$ptr,"$dest/pbconf/$ddir-$dver /".basename($f),\%pb);627 pb_filter_file("$ENV{'PBROOTDIR'}/$f",$ptr,"$dest/pbconf/$ddir-$dver-$arch/".basename($f),\%pb); 599 628 } 600 629 } … … 608 637 pb_log(0,"Build files generated for ".join(',',sort(@found))."\n"); 609 638 pb_log(0,"No Build files found for ".join(',',sort(@notfound))."\n") if (@notfound); 639 pb_log(2,"DEBUG: patches: ".Dumper(%patches)."\n"); 640 610 641 # Get the generic filter (all.pbf) and 611 642 # apply those to the non-build files including those … … 624 655 pb_log(2,"Files ".$liste."have been filtered\n"); 625 656 626 # Filter potential patches 627 pb_mkdir_p("$dest/pbconf/pbpatch"); 628 foreach my $p (sort(@patches)) { 629 my $pp = basename($p); 630 pb_filter_file($p,$ptr,"$dest/pbconf/pbpatch/$pp",\%pb); 631 pb_system("gzip -9 $dest/pbconf/pbpatch/$pp"); 632 } 657 # Filter potential patches (local + remote) 658 pb_log(0,"Delivering and compressing patches "); 659 foreach my $v (keys %patches) { 660 pb_mkdir_p("$dest/pbconf/$v/pbpatch"); 661 foreach my $pf (split(/,/,$patches{$v})) { 662 my $pp = basename($pf); 663 pb_cms_export($pf,undef,"$dest/pbconf/$v/pbpatch"); 664 pb_filter_file_inplace($ptr,"$dest/pbconf/$v/pbpatch/$pp",\%pb); 665 pb_system("gzip -9f $dest/pbconf/$v/pbpatch/$pp","","quiet"); 666 } 667 pb_log(0,"$patches{$v} "); 668 } 669 pb_log(0,"\n"); 633 670 634 671 # Prepare the dest directory for archive … … 685 722 @pkgs = @$ptr; 686 723 724 my $arch = pb_get_arch(); 725 687 726 my ($pkg) = pb_conf_read("$ENV{'PBDESTDIR'}/$ENV{'PBPROJVER'}-$ENV{'PBPROJTAG'}.pb","pbpkg"); 688 727 $pkg = { } if (not defined $pkg); … … 712 751 symlink "$src","$ENV{'PBBUILDDIR'}/SOURCES/".basename($src) || die "Unable to symlink $src in $ENV{'PBBUILDDIR'}/SOURCES"; 713 752 # We need to first extract the spec file 714 my @specfile = pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/$ddir-$dver /","$ENV{'PBBUILDDIR'}/SPECS");753 my @specfile = pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/$ddir-$dver-$arch/","$ENV{'PBBUILDDIR'}/SPECS","spec"); 715 754 716 755 # We need to handle potential patches to upstream sources 717 my @patchfiles = pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/pbpatch/","$ENV{'PBBUILDDIR'}/SOURCES");756 pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/$ddir-$dver-$arch/pbpatch/","$ENV{'PBBUILDDIR'}/SOURCES","patch"); 718 757 719 758 pb_log(2,"specfile: ".Dumper(\@specfile)."\n"); … … 742 781 chdir "$pbpkg-$pbver" || die "Unable to chdir to $pbpkg-$pbver"; 743 782 pb_rm_rf("debian"); 744 symlink "pbconf/$ddir-$dver ","debian" || die "Unable to symlink to pbconf/$ddir-$dver";783 symlink "pbconf/$ddir-$dver-$arch","debian" || die "Unable to symlink to pbconf/$ddir-$dver-$arch"; 745 784 chmod 0755,"debian/rules"; 746 785 if ($dver !~ /[0-9]/) { … … 763 802 764 803 # We need to first extract the ebuild file 765 @ebuildfile = pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/$ddir-$dver /","$tmpd");804 @ebuildfile = pb_extract_build_files($src2,"$pbpkg-$pbver/pbconf/$ddir-$dver-$arch/","$tmpd","ebuild"); 766 805 767 806 # Prepare the build env for gentoo … … 811 850 pb_system("tar xfz $src2","Extracting pbconf"); 812 851 chdir "$pbpkg-$pbver" || die "Unable to chdir to $pbpkg-$pbver"; 813 symlink "pbconf/$ddir-$dver ","install" || die "Unable to symlink to pbconf/$ddir-$dver";852 symlink "pbconf/$ddir-$dver-$arch","install" || die "Unable to symlink to pbconf/$ddir-$dver-$arch"; 814 853 if (-x "install/pbslack") { 815 854 pb_system("./install/pbslack","Building package"); … … 1188 1227 $v =~ s/,.*//; 1189 1228 1190 # Which is our local arch ? (standardize on i386 for those platforms) 1191 my $arch = `uname -m`; 1192 chomp($arch); 1193 $arch =~ s/i.86/i386/; 1229 my $arch = pb_get_arch(); 1194 1230 1195 1231 # Launch the VMs/VEs … … 2043 2079 my $dir=shift; 2044 2080 my $ddir=shift; 2081 my $mandatory=shift || "spec"; 2045 2082 my @files; 2046 2083 2084 my $flag = "mayfail" if ($mandatory eq "patch"); 2085 my $res; 2086 2047 2087 if ($src =~ /tar\.gz$/) { 2048 pb_system("tar xfpz $src $dir","Extracting build files");2088 $res = pb_system("tar xfpz $src $dir","Extracting $mandatory files from $src",$flag); 2049 2089 } elsif ($src =~ /tar\.bz2$/) { 2050 pb_system("tar xfpj $src $dir","Extracting build files");2090 $res = pb_system("tar xfpj $src $dir","Extracting $mandatory files from $src",$flag); 2051 2091 } else { 2052 2092 die "Unknown compression algorithm for $src"; 2053 2093 } 2094 # If not mandatory return now 2095 return() if (($res != 0) and ($mandatory eq "patch")); 2054 2096 opendir(DIR,"$dir") || die "Unable to open directory $dir"; 2055 2097 foreach my $f (readdir(DIR)) { 2056 2098 next if ($f =~ /^\./); 2099 # Skip potential patch dir 2100 next if ($f =~ /^pbpatch/); 2057 2101 move("$dir/$f","$ddir") || die "Unable to move $dir/$f to $ddir"; 2058 2102 pb_log(2,"mv $dir/$f $ddir\n"); … … 2100 2144 } 2101 2145 2146 # Which is our local arch ? (standardize on i386 for those platforms) 2147 sub pb_get_arch { 2148 2149 my $arch = `uname -m`; 2150 chomp($arch); 2151 $arch =~ s/i.86/i386/; 2152 return($arch); 2153 } 2154 2102 2155 1;
Note:
See TracChangeset
for help on using the changeset viewer.