build: add support for declaring package CONFLICTS which only affect selecting built...
authorFelix Fietkau <nbd@openwrt.org>
Sun, 5 Oct 2014 16:41:33 +0000 (16:41 +0000)
committerFelix Fietkau <nbd@openwrt.org>
Sun, 5 Oct 2014 16:41:33 +0000 (16:41 +0000)
Signed-off-by: Felix Fietkau <nbd@openwrt.org>
SVN-Revision: 42770

include/package-defaults.mk
include/package-dumpinfo.mk
scripts/metadata.pl
scripts/metadata.pm

index 19f2a16..6a345b6 100644 (file)
@@ -19,6 +19,7 @@ define Package/Default
   CATEGORY:=Extra packages
   DEPENDS:=
   MDEPENDS:=
+  CONFLICTS:=
   PROVIDES:=
   EXTRA_DEPENDS:=
   MAINTAINER:=$(PKG_MAINTAINER)
index 5d1d76f..26c8d31 100644 (file)
@@ -31,6 +31,7 @@ $(if $(MENU),Menu: $(MENU)
 )$(if $(findstring $(PREREQ_CHECK),1),Prereq-Check: 1
 )Version: $(VERSION)
 Depends: $(call PKG_FIXUP_DEPENDS,$(1),$(DEPENDS))
+Conflicts: $(CONFLICTS)
 Menu-Depends: $(MDEPENDS)
 Provides: $(PROVIDES)
 $(if $(VARIANT),Build-Variant: $(VARIANT)
index 4014613..366e61c 100755 (executable)
@@ -522,6 +522,18 @@ sub mconf_depends {
        return $res;
 }
 
+sub mconf_conflicts {
+       my $pkgname = shift;
+       my $depends = shift;
+       my $res = "";
+
+       foreach my $depend (@$depends) {
+               next unless $package{$depend};
+               $res .= "\t\tdepends on m || (PACKAGE_$depend != y)\n";
+       }
+       return $res;
+}
+
 sub print_package_config_category($) {
        my $cat = shift;
        my %menus;
@@ -583,6 +595,7 @@ sub print_package_config_category($) {
                        }
                        print mconf_depends($pkg->{name}, $pkg->{depends}, 0);
                        print mconf_depends($pkg->{name}, $pkg->{mdepends}, 0);
+                       print mconf_conflicts($pkg->{name}, $pkg->{conflicts});
                        print "\t\thelp\n";
                        print $pkg->{description};
                        print "\n";
index ab5abc0..16acb8e 100644 (file)
@@ -113,6 +113,7 @@ sub parse_package_metadata($) {
                };
                /^Menu-Depends: \s*(.+)\s*$/ and $pkg->{mdepends} = [ split /\s+/, $1 ];
                /^Depends: \s*(.+)\s*$/ and $pkg->{depends} = [ split /\s+/, $1 ];
+               /^Conflicts: \s*(.+)\s*$/ and $pkg->{conflicts} = [ split /\s+/, $1 ];
                /^Hidden: \s*(.+)\s*$/ and $pkg->{hidden} = 1;
                /^Build-Variant: \s*([\w\-]+)\s*/ and $pkg->{variant} = $1;
                /^Default-Variant: .*/ and $pkg->{variant_default} = 1;