Changeset 1186


Ignore:
Timestamp:
02/14/11 14:41:25 (2 years ago)
Author:
bruno
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.