Changeset 1186 in ProjectBuilder for devel/pb/bin


Ignore:
Timestamp:
Feb 14, 2011, 2:41:25 PM (13 years ago)
Author:
Bruno Cornec
Message:
  • Fix now pateches and sources delivery in parallel mode completely.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • devel/pb/bin/pb

    r1185 r1186  
    734734
    735735    my %pkgs;
    736     my %pb;             # Structure to store conf info
     736    my $pb;             # Structure to store conf info
    737737
    738738    die "pb_cms2build requires a parameter: SandBox or CMS" if (not defined $param);
     
    860860        }
    861861   
    862         # Setup %pb structure to allow filtering later on, on files using that structure
    863         $pb{'tag'} = $pbtag;
    864         $pb{'rev'} = $pbrev;
    865         $pb{'ver'} = $pbver;
    866         $pb{'pkg'} = $pbpkg;
    867         $pb{'realpkg'} = $pbpkg;
    868         $pb{'suf'} = $pbos->{'suffix'};
    869         $pb{'date'} = $pbdate;
    870         $pb{'defpkgdir'} = $defpkgdir;
    871         $pb{'extpkgdir'} = $extpkgdir;
    872         $pb{'chglog'} = $chglog;
    873         $pb{'packager'} = $ENV{'PBPACKAGER'};
    874         $pb{'proj'} = $ENV{'PBPROJ'};
    875         $pb{'repo'} = $ENV{'PBREPO'};
    876         my %patches = ();
    877         my %sources = ();
    878         $pb{'patches'} = \%patches;
    879         $pb{'sources'} = \%sources;
    880         pb_log(2,"DEBUG: pb: ".Dumper(%pb)."\n");
     862        # Setup $pb structure to allow filtering later on, on files using that structure
     863        $pb->{'tag'} = $pbtag;
     864        $pb->{'rev'} = $pbrev;
     865        $pb->{'ver'} = $pbver;
     866        $pb->{'pkg'} = $pbpkg;
     867        $pb->{'realpkg'} = $pbpkg;
     868        $pb->{'suf'} = $pbos->{'suffix'};
     869        $pb->{'date'} = $pbdate;
     870        $pb->{'defpkgdir'} = $defpkgdir;
     871        $pb->{'extpkgdir'} = $extpkgdir;
     872        $pb->{'chglog'} = $chglog;
     873        $pb->{'packager'} = $ENV{'PBPACKAGER'};
     874        $pb->{'proj'} = $ENV{'PBPROJ'};
     875        $pb->{'repo'} = $ENV{'PBREPO'};
     876        $pb->{'patches'} = ();
     877        $pb->{'sources'} = ();
    881878   
    882879        my $tmpd = "$ENV{'PBTMP'}/cms.$$";
     
    889886        # Execute the pbinit script if any
    890887        if (-x "$ENV{'PBROOTDIR'}/$pbpkg/pbinit") {
    891             pb_filter_file("$ENV{'PBROOTDIR'}/$pbpkg/pbinit",$ptr,"$ENV{'PBTMP'}/pbinit",\%pb);
     888            pb_filter_file("$ENV{'PBROOTDIR'}/$pbpkg/pbinit",$ptr,"$ENV{'PBTMP'}/pbinit",$pb);
    892889            chmod 0755,"$ENV{'PBTMP'}/pbinit";
    893890            pb_system("cd $dest ; $ENV{'PBTMP'}/pbinit","Executing init script from $ENV{'PBROOTDIR'}/$pbpkg/pbinit","verbose");
     
    913910                # Distro context
    914911                my $pbos = pb_distro_get_context($v);
     912                $pb->{'pbos'} = $pbos;
     913                pb_log(3,"DEBUG: pb: ".Dumper($pb)."\n");
    915914
    916915                # Get all filters to apply
     
    921920                # We need to compute the real name of the package
    922921                my $pbrealpkg = pb_cms_get_real_pkg($pbpkg,$pbos->{'type'});
    923                 $pb{'realpkg'} = $pbrealpkg;
     922                $pb->{'realpkg'} = $pbrealpkg;
    924923                pb_log(1,"Virtual package $pbpkg has a real package name of $pbrealpkg on $pbos->{'name'}-$pbos->{'version'}\n") if ($pbrealpkg ne $pbpkg);
    925924   
     
    932931                my %pkgfiles = ();
    933932                # Used in Filter.pm by pb_filter_file
    934                 $pb{'tuple'} = "$v";
    935933
    936934                $build{$v} = "yes";
     
    950948                    $build{$v} = "no";
    951949                }
    952                 pb_log(2,"DEBUG bfiles: ".Dumper(\%bfiles)."\n");
     950                pb_log(2,"DEBUG($v) bfiles: ".Dumper(\%bfiles)."\n");
    953951   
    954952                if ($build{$v} ne "no") {
     
    956954                    # destination dir depends on the type of file
    957955                    # For patch support
    958                     foreach my $f (values %bfiles,values %pkgfiles) {
    959                         pb_filter_file("$ENV{'PBROOTDIR'}/$f",$ptr,"$dest/pbconf/$v/".basename($f),\%pb);
    960                     }
    961956                    # TODO: Make it CMS aware
    962                     pb_list_sfiles("$ENV{'PBROOTDIR'}/$pbpkg/pbpatch", \%patches, $pbos, "$ENV{'PBROOTDIR'}/$pbpkg/pbextpatch");
    963                     pb_log(2,"DEBUG patches: ".Dumper(\%patches)."\n");
     957                    $pb->{'patches'} = pb_list_sfiles("$ENV{'PBROOTDIR'}/$pbpkg/pbpatch", $pb->{'patches'}, $pbos, "$ENV{'PBROOTDIR'}/$pbpkg/pbextpatch");
     958                    pb_log(2,"DEBUG($v) patches: ".Dumper($pb->{'patches'})."\n");
    964959                    # TODO: Make it CMS aware
    965                     pb_list_sfiles("$ENV{'PBROOTDIR'}/$pbpkg/pbsrc", \%sources, $pbos, "$ENV{'PBROOTDIR'}/$pbpkg/pbextsrc");
    966                     pb_log(2,"DEBUG sources: ".Dumper(\%sources)."\n");
     960                    $pb->{'sources'} = pb_list_sfiles("$ENV{'PBROOTDIR'}/$pbpkg/pbsrc", $pb->{'sources'}, $pbos, "$ENV{'PBROOTDIR'}/$pbpkg/pbextsrc");
     961                    pb_log(2,"DEBUG($v) sources: ".Dumper($pb->{'sources'})."\n");
    967962   
    968                     if (defined $patches{$v}) {
     963                    if (defined $pb->{'patches'}->{$v}) {
    969964                        # Filter potential patches (local + remote)
    970965                        pb_mkdir_p("$dest/pbconf/$v/pbpatch");
    971                         foreach my $pf (split(/,/,$patches{$v})) {
     966                        foreach my $pf (split(/,/,$pb->{'patches'}->{$v})) {
    972967                            my $pp = basename($pf);
    973968                            pb_cms_export($pf,undef,"$dest/pbconf/$v/pbpatch");
    974                             pb_filter_file_inplace($ptr,"$dest/pbconf/$v/pbpatch/$pp",\%pb);
     969                            pb_filter_file_inplace($ptr,"$dest/pbconf/$v/pbpatch/$pp",$pb);
    975970                            pb_system("gzip -9f $dest/pbconf/$v/pbpatch/$pp","","quiet");
    976971                        }
    977972                    }
    978                     if (defined $sources{$v}) {
     973                    if (defined $pb->{'sources'}->{$v}) {
    979974                        pb_mkdir_p("$dest/pbconf/$v/pbsrc");
    980                         foreach my $pf (split(/,/,$sources{$v})) {
     975                        foreach my $pf (split(/,/,$pb->{'sources'}->{$v})) {
    981976                            my $pp = basename($pf);
    982977                            pb_cms_export($pf,undef,"$dest/pbconf/$v/pbsrc");
    983                             pb_filter_file_inplace($ptr,"$dest/pbconf/$v/pbsrc/$pp",\%pb);
     978                            pb_filter_file_inplace($ptr,"$dest/pbconf/$v/pbsrc/$pp",$pb);
    984979                        }
     980                    }
     981                    # Filter build files at the end, as they depend on patches and sources
     982                    foreach my $f (values %bfiles,values %pkgfiles) {
     983                        pb_filter_file("$ENV{'PBROOTDIR'}/$f",$ptr,"$dest/pbconf/$v/".basename($f),$pb);
    985984                    }
    986985                }
     
    990989                    my $str = "";
    991990                    $str .= "build $v = $build{$v}\n" if (defined $build{$v});
    992                     $str .= "patches $v = $patches{$v}\n" if (defined $patches{$v});
    993                     $str .= "sources $v = $sources{$v}\n" if (defined $sources{$v});
     991                    $str .= "patches $v = $pb->{'patches'}->{$v}\n" if (defined $pb->{'patches'}->{$v});
     992                    $str .= "sources $v = $pb->{'sources'}->{$v}\n" if (defined $pb->{'sources'}->{$v});
    994993                    pb_set_content("$tmpd/$$","$str");
    995994                    $pm->finish;
     
    10011000            my %h = ();
    10021001            my %tmp;
     1002            my %tmp2;
    10031003            my $pt;
    10041004            my $k;
     
    10161016                }
    10171017            }
    1018             pb_log(3,"HASH: ".Dumper(%h));
     1018            pb_log(2,"HASH: ".Dumper(%h));
    10191019
    10201020            # Patches
    10211021            pb_log(0,"Delivered and compressed patches ");
    10221022            $pt = $h{'patches'};
    1023             foreach $k (split(/,/,values %$pt)) {
    1024                 $tmp{$k} = "";
    1025             }
    1026             foreach $k (keys %tmp) {
    1027                 $tmp{$k} = undef;
    1028                 pb_log(0,"$k");
     1023            foreach $k (keys %$pt) {
     1024                foreach my $v1 (split(/,/,$pt->{$k})) {
     1025                    $tmp{$v1} = "";
     1026                }
     1027            }
     1028            if (keys %tmp) {
     1029                foreach $k (keys %tmp) {
     1030                    pb_log(0,"$k ");
     1031                }
     1032            } else {
     1033                pb_log(0,"N/A");
    10291034            }
    10301035            pb_log(0,"\n");
     
    10331038            pb_log(0,"Delivered additional sources ");
    10341039            $pt = $h{'sources'};
    1035             foreach $k (split(/,/,values %$pt)) {
    1036                 $tmp{$k} = "";
    1037             }
    1038             foreach $k (keys %tmp) {
    1039                 pb_log(0,"$k");
     1040            foreach $k (keys %$pt) {
     1041                foreach my $v1 (split(/,/,$pt->{$k})) {
     1042                    $tmp2{$v1} = "";
     1043                }
     1044            }
     1045            if (keys %tmp2) {
     1046                foreach $k (keys %tmp2) {
     1047                    pb_log(0,"$k ");
     1048                }
     1049            } else {
     1050                pb_log(0,"N/A");
    10401051            }
    10411052            pb_log(0,"\n");
     
    10561067            if (defined $filteredfiles->{$pbpkg}) {
    10571068                foreach my $f (split(/,/,$filteredfiles->{$pbpkg})) {
    1058                     pb_filter_file_inplace($ptr,"$dest/$f",\%pb);
     1069                    pb_filter_file_inplace($ptr,"$dest/$f",$pb);
    10591070                    $liste = "$f $liste";
    10601071                }
     
    10671078                if (-x "$pbvf") {
    10681079                    my $target = "$ENV{'PBDESTDIR'}/".basename($pbvf);
    1069                     pb_filter_file("$pbvf",$ptr,$target,\%pb);
     1080                    pb_filter_file("$pbvf",$ptr,$target,$pb);
    10701081                    chmod 0755,"$target";
    10711082                }
     
    32503261
    32513262        open(OUT,"> $ENV{'PBTMP'}/$pbpkg.ann") || die "Unable to create $ENV{'PBTMP'}/$pbpkg.ann: $!";
    3252         my %pb;
    3253         $pb{'realpkg'} = $pbpkg;
    3254         $pb{'ver'} = $pbver;
    3255         $pb{'tag'} = $pbtag;
    3256         $pb{'date'} = $pbdate;
    3257         $pb{'chglog'} = $chglog;
    3258         $pb{'packager'} = $pbpackager;
    3259         $pb{'proj'} = $ENV{'PBPROJ'};
    3260         $pb{'repo'} = $pbrepo;
    3261         pb_changelog(\%pb,\*OUT,"yes");
     3263        my $pb;
     3264        $pb->{'realpkg'} = $pbpkg;
     3265        $pb->{'ver'} = $pbver;
     3266        $pb->{'tag'} = $pbtag;
     3267        $pb->{'date'} = $pbdate;
     3268        $pb->{'chglog'} = $chglog;
     3269        $pb->{'packager'} = $pbpackager;
     3270        $pb->{'proj'} = $ENV{'PBPROJ'};
     3271        $pb->{'repo'} = $pbrepo;
     3272        pb_changelog($pb,\*OUT,"yes");
    32623273        close(OUT);
    32633274        push(@files,"$ENV{'PBTMP'}/$pbpkg.ann");
     
    36183629}
    36193630pb_log(2,"DEBUG: exiting pb_list_sfiles: ".Dumper($ptr)."\n");
     3631return($ptr);
    36203632}
    36213633   
Note: See TracChangeset for help on using the changeset viewer.