X-Git-Url: https://git.librecmc.org/?a=blobdiff_plain;f=scripts%2Fpackage-metadata.pl;h=5abc1bdef3f70e1c4cbe3f97ecfd6ea925ad88ed;hb=543d945f07ec439388cbe3a9ea1b193e910bb824;hp=70e7f8e2c8b41533534fd230ca3c16c94f688435;hpb=4bb54ed15ee4647c36a4c2b3cb9416f344594b8a;p=oweals%2Fopenwrt.git diff --git a/scripts/package-metadata.pl b/scripts/package-metadata.pl index 70e7f8e2c8..5abc1bdef3 100755 --- a/scripts/package-metadata.pl +++ b/scripts/package-metadata.pl @@ -191,9 +191,9 @@ sub mconf_depends { $depend = shift @vdeps; if (@vdeps > 1) { - $condition = ($condition ? "$condition && " : '') . '!('.join("||", map { "PACKAGE_".$_ } @vdeps).')'; + $condition = ($condition ? "$condition && " : '') . join("&&", map { "PACKAGE_$_ 0) { - $condition = ($condition ? "$condition && " : '') . '!PACKAGE_'.$vdeps[0]; + $condition = ($condition ? "$condition && " : '') . "PACKAGE_${vdeps[0]} 0) { $depend = join("||", map { "PACKAGE_".$_->{name} } @$vdep); } else { $flags =~ /@/ or $depend = "PACKAGE_$depend"; @@ -358,14 +358,30 @@ sub gen_package_config() { print_package_overrides(); } +sub and_condition($) { + my $condition = shift; + my @spl_and = split('\&\&', $condition); + if (@spl_and == 1) { + return "\$(CONFIG_$spl_and[0])"; + } + return "\$(and " . join (',', map("\$(CONFIG_$_)", @spl_and)) . ")"; +} + +sub gen_condition ($) { + my $condition = shift; + # remove '!()', just as include/package-ipkg.mk does + $condition =~ s/[()!]//g; + return join("", map(and_condition($_), split('\|\|', $condition))); +} + sub get_conditional_dep($$) { my $condition = shift; my $depstr = shift; if ($condition) { if ($condition =~ /^!(.+)/) { - return "\$(if \$(CONFIG_$1),,$depstr)"; + return "\$(if " . gen_condition($1) . ",,$depstr)"; } else { - return "\$(if \$(CONFIG_$condition),$depstr)"; + return "\$(if " . gen_condition($condition) . ",$depstr)"; } } else { return $depstr; @@ -404,9 +420,9 @@ sub gen_package_mk() { my @vdeps = grep { $srcname ne $_->{src}{name} } @{$vpkg_dep}; foreach my $vdep (@vdeps) { - my $depstr = "\$(curdir)/$vdep->{src}{path}/compile"; + my $depstr = sprintf '$(curdir)/%s/compile', $vdep->{src}{path}; if (@vdeps > 1) { - $depstr = "\$(if \$(CONFIG_PACKAGE_$vdep->{name}),$depstr)"; + $depstr = sprintf '$(if $(CONFIG_PACKAGE_%s),%s)', $vdep->{name}, $depstr; } my $depline = get_conditional_dep($condition, $depstr); if ($depline) { @@ -416,32 +432,32 @@ sub gen_package_mk() { } my $config = ''; - $config = "\$(CONFIG_PACKAGE_$pkg->{name})" unless $pkg->{buildonly}; + $config = sprintf '$(CONFIG_PACKAGE_%s)', $pkg->{name} unless $pkg->{buildonly}; - $pkg->{prereq} and print "prereq-$config += $src->{path}\n"; + $pkg->{prereq} and printf "prereq-%s += %s\n", $config, $src->{path}; next if $pkg->{buildonly}; - print "package-$config += $src->{path}\n"; + printf "package-%s += %s\n", $config, $src->{path}; if ($pkg->{variant}) { if (!defined($variant_default) or $pkg->{variant_default}) { $variant_default = $pkg->{variant}; } - print "\$(curdir)/$src->{path}/variants += \$(if $config,$pkg->{variant})\n"; + printf "\$(curdir)/%s/variants += \$(if %s,%s)\n", $src->{path}, $config, $pkg->{variant}; } } if (defined($variant_default)) { - print "\$(curdir)/$src->{path}/default-variant := $variant_default\n"; + printf "\$(curdir)/%s/default-variant := %s\n", $src->{path}, $variant_default; } unless (grep {!$_->{buildonly}} @{$src->{packages}}) { - print "package- += $src->{path}\n"; + printf "package- += %s\n", $src->{path}; } if (@{$src->{buildtypes}} > 0) { - print "buildtypes-$src->{path} = ".join(' ', @{$src->{buildtypes}})."\n"; + printf "buildtypes-%s = %s\n", $src->{path}, join(' ', @{$src->{buildtypes}}); } foreach my $type ('', @{$src->{buildtypes}}) { @@ -472,12 +488,12 @@ sub gen_package_mk() { my $src_dep = $srcpackage{$dep}; unless (defined($src_dep) && (!$deptype || grep { $_ eq $deptype } @{$src_dep->{buildtypes}})) { - warn sprintf "WARNING: Makefile '%s' has a build dependency on '%s%s', which does not exist\n", - $src->{makefile}, $dep, $depsuffix; + warn sprintf "WARNING: Makefile '%s' has a build dependency on '%s', which does not exist\n", + $src->{makefile}, $dep.$depsuffix; next; } - my $depstr = "\$(curdir)/$src_dep->{path}$depsuffix/compile"; + my $depstr = sprintf '$(curdir)/%s/compile', $src_dep->{path}.$depsuffix; my $depline = get_conditional_dep($condition, $depstr); if ($depline) { $deplines{$suffix}{$depline}++; @@ -488,7 +504,7 @@ sub gen_package_mk() { foreach my $suffix (sort keys %deplines) { my $depline = join(" ", sort keys %{$deplines{$suffix}}); if ($depline) { - $line .= "\$(curdir)/$src->{path}$suffix/compile += $depline\n"; + $line .= sprintf "\$(curdir)/%s/compile += %s\n", $src->{path}.$suffix, $depline; } } } @@ -509,13 +525,40 @@ sub gen_package_source() { } } -sub gen_package_subdirs() { +sub gen_package_auxiliary() { 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->{repository}) { print "Package/$name/subdir = $pkg->{repository}\n"; } + if ($pkg->{name} && defined($pkg->{abiversion}) && length($pkg->{abiversion})) { + my $abiv; + + if ($pkg->{abiversion} =~ m!^(\d{4})-(\d{2})-(\d{2})-[0-9a-f]{7,40}$!) { + print STDERR "WARNING: Reducing ABI version '$pkg->{abiversion}' of package '$name' to '$1$2$3'\n"; + $abiv = "$1$2$3"; + } + else { + $abiv = $pkg->{abiversion}; + } + + foreach my $n (@{$pkg->{provides}}) { + print "Package/$n/abiversion = $abiv\n"; + } + } + my %depends; + foreach my $dep (@{$pkg->{depends} || []}) { + if ($dep =~ m!^\+?(?:[^:]+:)?([^@]+)$!) { + $depends{$1}++; + } + } + my @depends = sort keys %depends; + if (@depends > 0) { + foreach my $n (@{$pkg->{provides}}) { + print "Package/$n/depends = @depends\n"; + } + } } } @@ -565,7 +608,7 @@ sub parse_command() { /^config$/ and return gen_package_config(); /^kconfig/ and return gen_kconfig_overrides(); /^source$/ and return gen_package_source(); - /^subdirs$/ and return gen_package_subdirs(); + /^pkgaux$/ and return gen_package_auxiliary(); /^license$/ and return gen_package_license(0); /^licensefull$/ and return gen_package_license(1); /^usergroup$/ and return gen_usergroup_list(); @@ -577,7 +620,7 @@ Available Commands: $0 config [file] Package metadata in Kconfig format $0 kconfig [file] [config] [patchver] Kernel config overrides $0 source [file] Package source file information - $0 subdirs [file] Package subdir information in makefile format + $0 pkgaux [file] Package auxiliary variables in makefile format $0 license [file] Package license information $0 licensefull [file] Package license information (full list) $0 usergroup [file] Package usergroup allocation list