Changeset 1186


Ignore:
Timestamp:
Feb 14, 2011, 2:41:25 PM (9 years ago)
Author:
Bruno Cornec
Message:
  • Fix now pateches and sources delivery in parallel mode completely.
Location:
devel/pb
Files:
2 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   
  • devel/pb/lib/ProjectBuilder/Filter.pm

    r1184 r1186  
    144144my $destfile=shift;
    145145my $pb=shift;
    146 
    147 pb_log(2,"DEBUG: From $f to $destfile\n");
     146my $tuple = "unknown";
     147$tuple = "$pb->{'pbos'}->{'name'}-$pb->{'pbos'}->{'version'}-$pb->{'pbos'}->{'arch'}" if (defined $pb->{'pbos'});
     148
     149pb_log(2,"DEBUG: From $f to $destfile (tuple: $tuple)\n");
     150pb_log(3,"DEBUG($tuple): pb ".Dumper($pb)."\n");
    148151pb_mkdir_p(dirname($destfile)) if (! -d dirname($destfile));
    149152open(DEST,"> $destfile") || die "Unable to create $destfile: $!";
     
    175178            $tmp = "";
    176179        } elsif (($s =~ /^PBPATCHSRC$/) && ($line =~ /^PBPATCHSRC$/)) {
    177             pb_log(3,"DEBUG filtering PBPATCHSRC\n");
     180            pb_log(3,"DEBUG($tuple) filtering PBPATCHSRC\n");
    178181            my $i = 0;
    179             if (defined $pb->{'patches'}->{$pb->{'tuple'}}) {
    180                 foreach my $p (split(/,/,$pb->{'patches'}->{$pb->{'tuple'}})) {
     182            pb_log(3,"DEBUG($tuple): pb ".Dumper($pb)."\n");
     183            pb_log(3,"DEBUG($tuple): pb/patches/tuple $pb->{'patches'}->{$tuple}\n");
     184            if (defined $pb->{'patches'}->{$tuple}) {
     185                foreach my $p (split(/,/,$pb->{'patches'}->{$tuple})) {
     186                    pb_log(3,"DEBUG($tuple) Adding patch $i ".basename($p)."\n");
    181187                    print DEST "Patch$i:         ".basename($p).".gz\n";
    182188                    $i++;
     
    185191            $tmp = "";
    186192        } elsif (($s =~ /^PBMULTISRC$/) && ($line =~ /^PBMULTISRC$/)) {
    187             pb_log(3,"DEBUG filtering PBMULTISRC\n");
     193            pb_log(3,"DEBUG($tuple) filtering PBMULTISRC\n");
    188194            my $i = 1;
    189             if (defined $pb->{'patches'}->{$pb->{'tuple'}}) {
    190                 foreach my $p (split(/,/,$pb->{'sources'}->{$pb->{'tuple'}})) {
     195            if (defined $pb->{'patches'}->{$tuple}) {
     196                foreach my $p (split(/,/,$pb->{'sources'}->{$tuple})) {
     197                    pb_log(3,"DEBUG($tuple) Adding source $i ".basename($p)."\n");
    191198                    print DEST "Source$i:         ".basename($p)."\n";
    192199                    $i++;
     
    195202            $tmp = "";
    196203        } elsif (($s =~ /^PBPATCHCMD$/) && ($line =~ /^PBPATCHCMD$/)) {
    197             pb_log(3,"DEBUG filtering PBPATCHCMD\n");
     204            pb_log(3,"DEBUG($tuple) filtering PBPATCHCMD\n");
    198205            my $i = 0;
    199             if (defined $pb->{'patches'}->{$pb->{'tuple'}}) {
    200                 foreach my $p (split(/,/,$pb->{'patches'}->{$pb->{'tuple'}})) {
     206            if (defined $pb->{'patches'}->{$tuple}) {
     207                foreach my $p (split(/,/,$pb->{'patches'}->{$tuple})) {
     208                    pb_log(3,"DEBUG($tuple) Adding patch command $i\n");
    201209                    print DEST "%patch$i -p1\n";
    202210                    $i++;
     
    233241my $pb=shift;
    234242
    235 my $cp = "$ENV{'PBTMP'}/".basename($destfile)."$$";
     243my $cp = "$ENV{'PBTMP'}/".basename($destfile).".$$";
    236244copy($destfile,$cp) || die "Unable to copy $destfile to $cp";
    237245
Note: See TracChangeset for help on using the changeset viewer.