Changeset 13813


Ignore:
Timestamp:
2009-01-02T03:49:02+01:00 (7 years ago)
Author:
nbd
Message:

fix recursive dependencies that might be caused by using conditional dependencies

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/scripts/metadata.pl

    r13321 r13813  
    369369} 
    370370 
    371 sub mconf_depends($$) { 
     371sub mconf_depends { 
     372        my $pkgname = shift; 
    372373        my $depends = shift; 
    373374        my $only_dep = shift; 
     
    388389 
    389390                if ($depend =~ /^(.+):(.+)$/) { 
    390                         $condition and $condition = "$condition && $1" or $condition = $1; 
     391                        if ($1 ne "PACKAGE_$pkgname") { 
     392                                if ($condition) { 
     393                                        $condition = "$condition && $1"; 
     394                                } else { 
     395                                        $condition = $1; 
     396                                } 
     397                        } 
    391398                        $depend = $2; 
    392399                } 
     
    401408                                # will not be checked. To fix this, we simply emit all of FOO's 
    402409                                # depends here as well. 
    403                                 $package{$depend} and mconf_depends($package{$depend}->{depends}, 1, $dep, $seen, $condition); 
     410                                $package{$depend} and mconf_depends($pkgname, $package{$depend}->{depends}, 1, $dep, $seen, $condition); 
    404411 
    405412                                $m = "select"; 
     
    407414                        }; 
    408415                        $flags =~ /@/ or $depend = "PACKAGE_$depend"; 
    409                         $condition and ($m =~ /select/ and $depend = "$depend if $condition" or $depend = "!($condition) || $depend"); 
     416                        if ($condition) { 
     417                                if ($m =~ /select/) { 
     418                                        $depend = "$depend if $condition"; 
     419                                } else { 
     420                                        $depend = "!($condition) || $depend"; 
     421                                } 
     422                        } 
    410423                } 
    411424                $dep->{$depend} =~ /select/ or $dep->{$depend} = $m; 
     
    469482                                print "\t\tdefault $default\n"; 
    470483                        } 
    471                         print mconf_depends($pkg->{depends}, 0); 
     484                        print mconf_depends($pkg->{name}, $pkg->{depends}, 0); 
    472485                        print "\t\thelp\n"; 
    473486                        print $pkg->{description}; 
Note: See TracChangeset for help on using the changeset viewer.