Menuconfig will not treat 'select FOO' as a real dependency
authornbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 12 Feb 2007 23:50:40 +0000 (23:50 +0000)
committernbd <nbd@3c298f89-4303-0410-b956-a3cf2f4a3e73>
Mon, 12 Feb 2007 23:50:40 +0000 (23:50 +0000)
thus if BAR depends on FOO and FOO depends on other config
options, these dependencies will not be checked.
To fix this, we simply emit all of FOO's depends (only real
dependencies, no select) for BAR as well.

git-svn-id: svn://svn.openwrt.org/openwrt/trunk@6293 3c298f89-4303-0410-b956-a3cf2f4a3e73

package/ntfs-3g/Makefile
scripts/metadata.pl

index d48ef3695f627253007e5cc67a9428e92217f020..314a52c0ff37b8893d6c90cf835a6fb246c12e72 100644 (file)
@@ -27,7 +27,7 @@ include $(INCLUDE_DIR)/package.mk
 
 define Package/ntfs-3g
   TITLE:=NTFS-3G
-  DEPENDS:=+libfuse +fuse-utils @LINUX_2_6
+  DEPENDS:=+libfuse +fuse-utils
   SECTION:=utils
   CATEGORY:=Utilities
   DESCRIPTION:=\
index 963be3f3828250b441f2fce57cb1037eac3502f8..7514a171354e1910b445d861a32dd08981e401e0 100755 (executable)
@@ -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";