diff --git a/scripts/metadata.pm b/scripts/metadata.pm
index c7f8532b54e36e93beac06096f57f046694df5be..8334f26d3179a0eb83aa1aa976778ff5828faf45 100644
--- a/scripts/metadata.pm
+++ b/scripts/metadata.pm
@@ -162,10 +162,10 @@ sub parse_package_metadata($) {
 			$overrides{$src} = 1;
 		};
 		next unless $src;
-		next if $ignore{$src};
 		/^Package:\s*(.+?)\s*$/ and do {
 			undef $feature;
 			$pkg = {};
+			$pkg->{ignore} = $ignore{$src};
 			$pkg->{src} = $src;
 			$pkg->{makefile} = $makefile;
 			$pkg->{name} = $1;
@@ -189,7 +189,7 @@ sub parse_package_metadata($) {
 		$feature and do {
 			/^Target-Name:\s*(.+?)\s*$/ and do {
 				$features{$1} or $features{$1} = [];
-				push @{$features{$1}}, $feature;
+				push @{$features{$1}}, $feature unless $ignore{$src};
 			};
 			/^Target-Title:\s*(.+?)\s*$/ and $feature->{target_title} = $1;
 			/^Feature-Priority:\s*(\d+)\s*$/ and $feature->{priority} = $1;
@@ -256,7 +256,7 @@ sub parse_package_metadata($) {
 				$preconfig = {
 					id => $1
 				};
-				$preconfig{$pkgname}->{$1} = $preconfig;
+				$preconfig{$pkgname}->{$1} = $preconfig unless $ignore{$src};
 			}
 		};
 		/^Preconfig-Type:\s*(.*?)\s*$/ and $preconfig->{type} = $1;
diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl
index 92c989d3a292416e548cd3e306471ecb29f3da5e..44494efd28139de66aeac71bb008ac0f99f51b8c 100755
--- a/scripts/package-metadata.pl
+++ b/scripts/package-metadata.pl
@@ -272,6 +272,7 @@ sub print_package_config_category($) {
 			print "menu \"$menu\"\n";
 		}
 		foreach my $pkg (@pkgs) {
+			next if $pkg->{ignore};
 			my $title = $pkg->{name};
 			my $c = (72 - length($pkg->{name}) - length($pkg->{title}));
 			if ($c > 0) {