Menuconfig will not treat 'select FOO' as a real dependency thus if BAR depends on...
authorFelix Fietkau <nbd@openwrt.org>
Mon, 12 Feb 2007 23:50:40 +0000 (23:50 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 12 Feb 2007 23:50:40 +0000 (23:50 +0000)
SVN-Revision: 6293

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

index d48ef36..314a52c 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 963be3f..7514a17 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";