Changeset 898


Ignore:
Timestamp:
11/10/09 03:31:28 (4 years ago)
Author:
bruno
Message:
  • Do not add conf files if already present in the list (changing pbconffiles into a hash for that to still keep order as this is mandatory)
  • Small optimisations for pb_conf function usage in pb
Location:
devel
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • devel/pb-modules/lib/ProjectBuilder/Conf.pm

    r891 r898  
    2424our @EXPORT = qw(pb_conf_init pb_conf_add pb_conf_read pb_conf_read_if pb_conf_get pb_conf_get_if); 
    2525 
    26 # Global list of conf files 
    27 my @pbconffiles = (); 
     26# Global hash of conf files 
     27# Key is the conf file name 
     28# Value is its rank 
     29my %pbconffiles; 
     30 
     31# Global hash of cached values.  
     32# We consider that values can not change during the life of pb 
     33# my %cachedval; 
    2834 
    2935=pod 
     
    5359=item B<pb_conf_init> 
    5460 
    55 This function setup the environment PBPROJ for project-builder function usage rfom other projects. 
     61This function setup the environment PBPROJ for project-builder function usage from other projects. 
    5662The first parameter is the project name. 
    57 It sets up environement variables (PBPROJ)  
     63It sets up environment variables (PBPROJ)  
    5864 
    5965=cut 
     
    8187 
    8288pb_log(2,"DEBUG: pb_conf_add with ".Dumper(@_)."\n"); 
    83 push(@pbconffiles,@_); 
     89 
     90foreach my $cf (@_) { 
     91    # Skip already used conf files 
     92    next if (defined $pbconffiles{$cf}); 
     93    # Add the new one at the end 
     94    my $num = keys %pbconffiles; 
     95    $pbconffiles{$cf} = $num; 
     96} 
    8497} 
    8598 
     
    191204my $ptr = undef; 
    192205 
    193 # the most important conf file is first, so read them in revers order 
    194 foreach my $f (reverse @pbconffiles) { 
     206# the most important conf file is first, so read them in reverse order 
     207foreach my $f (reverse sort { $pbconffiles{$a} <=> $pbconffiles{$b} } keys %pbconffiles) { 
    195208    $ptr = pb_conf_get_fromfile_if("$f",$ptr,@param); 
    196209} 
     
    234247foreach my $i (0..$#param) { 
    235248    $p1 = $ptr1[$i]; 
     249    # Optimisation doesn't seem useful 
     250    # if ((defined $p1) && (defined $cachedval{$p1})) { 
     251    # $ptr1[$i] = $cachedval{$p1}; 
     252    # next; 
     253    # } 
    236254    $p2 = $ptr2[$i]; 
    237255    # Always try to take the param from ptr1  
     
    271289    } 
    272290    $ptr1[$i] = $p1; 
     291    # Cache values to avoid redoing all that analyze when asked again on a known value 
     292    # $cachedval{$p1} = $p1; 
    273293} 
    274294pb_log(2,"DEBUG: pb_conf_get output: ".Dumper(@ptr1)."\n"); 
  • devel/pb/bin/pb

    r897 r898  
    528528    my ($scheme, $uri) = pb_cms_init($pbinit); 
    529529 
    530     my ($pkgv, $pkgt) = pb_conf_get_if("pkgver","pkgtag"); 
     530    # We need 2 lines here 
     531    my ($pkgv, $pkgt, $testver) = pb_conf_get_if("pkgver","pkgtag","testver"); 
     532    my @pt = pb_conf_get_if("vmlist","velist"); 
    531533 
    532534    # declare packager and repo for filtering 
     
    536538 
    537539    foreach my $pbpkg (@pkgs) { 
    538         my ($testver) = pb_conf_get_if("testver"); 
    539540        $ENV{'PBPKG'} = $pbpkg; 
    540541 
     
    596597 
    597598        my %build; 
    598         my @pt; 
    599599        # We want to at least build for the underlying distro 
    600600        my ($ddir, $dver, $dfam, $dtype, $pbsuf, $pbupd, $arch) = pb_distro_init(); 
     
    603603 
    604604        # Get list of distributions for which I need to generate build files 
    605         @pt = pb_conf_get_if("vmlist","velist"); 
    606605        if (defined $pt[0]->{$ENV{'PBPROJ'}}) { 
    607606            $tmpl .= $pt[0]->{$ENV{'PBPROJ'}}; 
     
    632631        # Do not do that for website 
    633632        if ((not defined $param) || ($param ne "Web")) { 
     633            pb_log(0,"Build files are being generated for ...\n"); 
    634634            my %virt; 
    635635            # De-duplicate similar VM and VE  
     
    731731                push @notfound,$b if ($build{$b} =~ /no/); 
    732732            } 
    733             pb_log(0,"Build files generated for ".join(',',sort(@found))."\n"); 
     733            pb_log(0," ... ".join(',',sort(@found))."\n"); 
    734734            pb_log(0,"No Build files found for ".join(',',sort(@notfound))."\n") if (@notfound); 
    735735            pb_log(2,"DEBUG: patches: ".Dumper(%patches)."\n"); 
     
    876876 
    877877    # Get list of packages to build 
    878     # Get content saved in cms2build 
    879878    my $ptr = pb_get_pkg(); 
    880879    @pkgs = @$ptr; 
    881880 
     881    # Get content saved in cms2build 
    882882    my ($pkg) = pb_conf_read("$ENV{'PBDESTDIR'}/$ENV{'PBPROJVER'}-$ENV{'PBPROJTAG'}.pb","pbpkg"); 
    883883    $pkg = { } if (not defined $pkg); 
     
    11741174 
    11751175    if ($cmt ne "Announce") { 
     1176        # Get list of packages to build 
    11761177        my $ptr = pb_get_pkg(); 
    11771178        @pkgs = @$ptr; 
     
    19791980    my ($scheme2,$uri) = pb_cms_init($pbinit); 
    19801981 
    1981     my ($pbconf) = pb_conf_get("pbconfurl"); 
     1982    my ($pbconf,$pburl) = pb_conf_get("pbconfurl","pburl"); 
    19821983    $uri = $pbconf->{$ENV{'PBPROJ'}}; 
    19831984    my ($scheme, $account, $host, $port, $path) = pb_get_uri($uri); 
    19841985 
    19851986    # Checking CMS repositories status 
    1986     my ($pburl) = pb_conf_get("pburl"); 
    19871987    ($scheme2, $account, $host, $port, $path) = pb_get_uri($pburl->{$ENV{'PBPROJ'}}); 
    19881988 
     
    24602460my $pbscript = "$ENV{'PBDESTDIR'}/snapv"; 
    24612461 
     2462my ($pbac) = pb_conf_get($vtype."login"); 
     2463 
    24622464foreach my $v (@$vm) { 
    24632465    # Name of the account to deal with for VM/VE 
    24642466    # Do not use the one passed potentially with -a 
    2465     my ($pbac) = pb_conf_get($vtype."login"); 
    24662467    my ($vmexist,$vmpid); 
    24672468 
Note: See TracChangeset for help on using the changeset viewer.