@ -341,6 +341,39 @@ sub package_depends($$) {
return $ ret ;
}
sub mconf_depends ($$) {
my $ depends = shift ;
my $ only_dep = shift ;
my $ res ;
$ depends or return ;
my @ depends = @$ depends ;
foreach my $ depend ( @ depends ) {
my $ m = "depends" ;
$ depend =~ s/^([@\+]+)// ;
my $ flags = $ 1 ;
my $ vdep ;
if ( $ vdep = $ package { $ depend } - > { vdepends } ) {
$ depend = join ( "||" , map { "PACKAGE_" . $ _ } @$ vdep ) ;
} else {
$ flags =~ /\+/ and do {
next if $ only_dep ;
$ m = "select" ;
# Menuconfig will not treat 'select FOO' as a real dependency
# thus if FOO depends on other config options, these dependencies
# will not be checked. To fix this, we simply emit all of FOO's
# depends here as well.
$ package { $ depend } and $ res . = mconf_depends ( $ package { $ depend } - > { depends } , 1 ) ;
} ;
$ flags =~ /@/ or $ depend = "PACKAGE_$depend" ;
}
$ res . = "\t\t$m $depend\n" ;
}
return $ res ;
}
sub print_package_config_category ($) {
my $ cat = shift ;
my % menus ;
@ -394,20 +427,7 @@ sub print_package_config_category($) {
foreach my $ default ( split /\s*,\s*/ , $ pkg - > { default } ) {
print "\t\tdefault $default\n" ;
}
foreach my $ depend ( @ { $ pkg - > { depends } } ) {
my $ m = "depends" ;
$ depend =~ s/^([@\+]+)// ;
my $ flags = $ 1 ;
my $ vdep ;
if ( $ vdep = $ package { $ depend } - > { vdepends } ) {
$ depend = join ( "||" , map { "PACKAGE_" . $ _ } @$ vdep ) ;
} else {
$ flags =~ /@/ or $ depend = "PACKAGE_$depend" ;
$ flags =~ /\+/ and $ m = "select" ;
}
print "\t\t$m $depend\n" ;
}
print mconf_depends ( $ pkg - > { depends } , 0 ) ;
print "\t\thelp\n" ;
print $ pkg - > { description } ;
print "\n" ;