X-Git-Url: http://git.rohieb.name/openwrt.git/blobdiff_plain/c07ae1307b6418dba5f23fb02c1b99b2dd721aad..2c0ee53d13868ac9fed7dcc05523214546f315bc:/scripts/metadata.pl diff --git a/scripts/metadata.pl b/scripts/metadata.pl index 43e5ccc6d..7496f33a7 100755 --- a/scripts/metadata.pl +++ b/scripts/metadata.pl @@ -201,12 +201,20 @@ sub print_target($) { } my $v = kver($target->{version}); + if (@{$target->{subtargets}} == 0) { $confstr = <{conf} bool "$target->{name}" select LINUX_$kernel select LINUX_$v EOF + } + else { + $confstr = <{conf} + bool "$target->{name}" +EOF + } if ($target->{subtarget}) { $confstr .= "\tdepends TARGET_$target->{boardconf}\n"; } @@ -293,7 +301,14 @@ EOF print "\tselect DEFAULT_$pkg\n"; $defaults{$pkg} = 1; } - print "\n"; + my $help = $profile->{desc}; + if ($help =~ /\w+/) { + $help =~ s/^\s*/\t /mg; + $help = "\thelp\n$help"; + } else { + undef $help; + } + print "$help\n"; } } @@ -375,7 +390,7 @@ sub mconf_depends { my $res; my $dep = shift; my $seen = shift; - my $condition = shift; + my $parent_condition = shift; $dep or $dep = {}; $seen or $seen = {}; @@ -386,11 +401,12 @@ sub mconf_depends { $depend =~ s/^([@\+]+)//; my $flags = $1; my $vdep; + my $condition; if ($depend =~ /^(.+):(.+)$/) { if ($1 ne "PACKAGE_$pkgname") { - if ($condition) { - $condition = "$condition && $1"; + if ($parent_condition) { + $condition = "$parent_condition && $1"; } else { $condition = $1; } @@ -398,6 +414,7 @@ sub mconf_depends { $depend = $2; } next if $seen->{$depend}; + next if $package{$depend} and $package{$depend}->{buildonly}; $seen->{$depend} = 1; if ($vdep = $package{$depend}->{vdepends}) { $depend = join("||", map { "PACKAGE_".$_ } @$vdep); @@ -442,6 +459,7 @@ sub print_package_config_category($) { foreach my $spkg (sort {uc($a) cmp uc($b)} keys %spkg) { foreach my $pkg (@{$spkg{$spkg}}) { + next if $pkg->{buildonly}; my $menu = $pkg->{submenu}; if ($menu) { $menu_dep{$menu} or $menu_dep{$menu} = $pkg->{submenudep}; @@ -543,6 +561,7 @@ sub gen_package_mk() { $config = "\$(CONFIG_PACKAGE_$name)" } if ($config) { + $pkg->{buildonly} and $config = ""; print "package-$config += $pkg->{subdir}$pkg->{src}\n"; $pkg->{prereq} and print "prereq-$config += $pkg->{subdir}$pkg->{src}\n"; } @@ -560,7 +579,7 @@ sub gen_package_mk() { } my $hasdeps = 0; - my $depline = ""; + my %deplines; foreach my $deps (@srcdeps) { my $idx; my $condition; @@ -588,9 +607,10 @@ sub gen_package_mk() { } undef $idx if $idx =~ /^(kernel)|(base-files)$/; if ($idx) { + my $depline; next if $pkg->{src} eq $pkg_dep->{src}; next if $dep{$pkg->{src}."->".$idx}; - next if $dep{$pkg->{src}."->($dep)".$idx}; + next if $dep{$pkg->{src}."->($dep)".$idx} and $pkg_dep->{vdepends}; my $depstr; if ($pkg_dep->{vdepends}) { @@ -602,16 +622,20 @@ sub gen_package_mk() { } if ($condition) { if ($condition =~ /^!(.+)/) { - $depline .= " \$(if \$(CONFIG_$1),,$depstr)"; + $depline = "\$(if \$(CONFIG_$1),,$depstr)"; } else { - $depline .= " \$(if \$(CONFIG_$condition),$depstr)"; + $depline = "\$(if \$(CONFIG_$condition),$depstr)"; } } else { - $depline .= " $depstr"; + $depline = $depstr; + } + if ($depline) { + $deplines{$idx.$dep} = $depline; } } } } + my $depline = join(" ", values %deplines); if ($depline) { $line .= "\$(curdir)/".$pkg->{subdir}."$pkg->{src}/compile += $depline\n"; } @@ -642,6 +666,16 @@ EOF } } +sub gen_package_source() { + parse_package_metadata($ARGV[0]) or exit 1; + foreach my $name (sort {uc($a) cmp uc($b)} keys %package) { + my $pkg = $package{$name}; + if ($pkg->{name} && $pkg->{source}) { + print "$pkg->{name}: "; + print "$pkg->{source}\n"; + } + } +} sub parse_command() { my $cmd = shift @ARGV; @@ -650,6 +684,7 @@ sub parse_command() { /^package_mk$/ and return gen_package_mk(); /^package_config$/ and return gen_package_config(); /^kconfig/ and return gen_kconfig_overrides(); + /^package_source$/ and return gen_package_source(); } print <