X-Git-Url: http://git.openwrt.org/?p=openwrt%2Fsvn-archive%2Farchive.git;a=blobdiff_plain;f=scripts%2Fmetadata.pl;h=d27cd8e59d72c0e26a8be5f2b34e204d0107f518;hp=396954a2c7b24431be5a3be9f7f2ee1cb5ba04af;hb=d63bd52a363c80ccc62cd064866c52499144dafa;hpb=86a2b998ec82983e64130b46027591c99a1f17bb diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 396954a2c7..d27cd8e59d 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -151,7 +151,7 @@ sub gen_target_mk() { PACKAGES:=".join(" ", @{$profile->{packages}})." endef"; $profiles_eval .= " -\$(eval \$(call Profile,$conf\_$profile->{id}))" +\$(eval \$(call AddProfile,$conf\_$profile->{id}))" } print " ifeq (\$(CONFIG_LINUX_$conf),y) @@ -180,6 +180,7 @@ sub target_config_features(@) { /usb/ and $ret .= "\tselect USB_SUPPORT\n"; /atm/ and $ret .= "\tselect ATM_SUPPORT\n"; /pcmcia/ and $ret .= "\tselect PCMCIA_SUPPORT\n"; + /video/ and $ret .= "\tselect VIDEO_SUPPORT\n"; /squashfs/ and $ret .= "\tselect USES_SQUASHFS\n"; /jffs2/ and $ret .= "\tselect USES_JFFS2\n"; /ext2/ and $ret .= "\tselect USES_EXT2\n"; @@ -297,8 +298,12 @@ config LINUX_$target->{conf}_$profile->{id} bool "$profile->{name}" depends LINUX_$target->{conf} EOF + my %pkgs; foreach my $pkg (@{$target->{packages}}, @{$profile->{packages}}) { - print "\tselect DEFAULT_$pkg\n"; + $pkgs{$pkg} = 1; + } + foreach my $pkg (keys %pkgs) { + print "\tselect DEFAULT_$pkg\n" unless ($pkg =~ /^-/ or $pkgs{"-$pkg"}); } print "\n"; } @@ -336,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; @@ -389,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";