metadata: replace %subdir hash with a path field in source packages
Every single reference to subdir was concatenated with the source package name, so it makes sense to store the concatenated value instead. Signed-off-by: Matthias Schiffer <mschiffer@universe-factory.net>
This commit is contained in:
		@@ -2,13 +2,12 @@ package metadata;
 | 
			
		||||
use base 'Exporter';
 | 
			
		||||
use strict;
 | 
			
		||||
use warnings;
 | 
			
		||||
our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
 | 
			
		||||
our @EXPORT = qw(%package %srcpackage %category %preconfig %features %overrides clear_packages parse_package_metadata parse_target_metadata get_multiline @ignore %usernames %groupnames);
 | 
			
		||||
 | 
			
		||||
our %package;
 | 
			
		||||
our %preconfig;
 | 
			
		||||
our %srcpackage;
 | 
			
		||||
our %category;
 | 
			
		||||
our %subdir;
 | 
			
		||||
our %features;
 | 
			
		||||
our %overrides;
 | 
			
		||||
our @ignore;
 | 
			
		||||
@@ -178,7 +177,6 @@ sub parse_target_metadata($) {
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
sub clear_packages() {
 | 
			
		||||
	%subdir = ();
 | 
			
		||||
	%preconfig = ();
 | 
			
		||||
	%package = ();
 | 
			
		||||
	%srcpackage = ();
 | 
			
		||||
@@ -204,12 +202,10 @@ sub parse_package_metadata($) {
 | 
			
		||||
	};
 | 
			
		||||
	while (<FILE>) {
 | 
			
		||||
		chomp;
 | 
			
		||||
		/^Source-Makefile: \s*((?:package\/)?((?:.+\/)?)([^\/]+)\/Makefile)\s*$/ and do {
 | 
			
		||||
			$subdir{$3} = $2;
 | 
			
		||||
 | 
			
		||||
		/^Source-Makefile: \s*((?:package\/)?((?:.+\/)?([^\/]+))\/Makefile)\s*$/ and do {
 | 
			
		||||
			$src = {
 | 
			
		||||
				makefile => $1,
 | 
			
		||||
				subdir => $2,
 | 
			
		||||
				path => $2,
 | 
			
		||||
				name => $3,
 | 
			
		||||
				ignore => $ignore{$3},
 | 
			
		||||
				packages => [],
 | 
			
		||||
@@ -235,7 +231,6 @@ sub parse_package_metadata($) {
 | 
			
		||||
			$pkg->{title} = "";
 | 
			
		||||
			$pkg->{depends} = [];
 | 
			
		||||
			$pkg->{mdepends} = [];
 | 
			
		||||
			$pkg->{subdir} = $src->{subdir};
 | 
			
		||||
			$pkg->{tristate} = 1;
 | 
			
		||||
			$pkg->{override} = $override;
 | 
			
		||||
			$package{$1} = $pkg;
 | 
			
		||||
@@ -278,7 +273,6 @@ sub parse_package_metadata($) {
 | 
			
		||||
					name => $vpkg,
 | 
			
		||||
					vdepends => [],
 | 
			
		||||
					src => $src,
 | 
			
		||||
					subdir => $src->{subdir},
 | 
			
		||||
					makefile => $src->{makefile},
 | 
			
		||||
				};
 | 
			
		||||
				push @{$package{$vpkg}->{vdepends}}, $pkg->{name};
 | 
			
		||||
 
 | 
			
		||||
@@ -419,7 +419,6 @@ sub gen_package_mk() {
 | 
			
		||||
	parse_package_metadata($ARGV[0]) or exit 1;
 | 
			
		||||
	foreach my $srcname (sort {uc($a) cmp uc($b)} keys %srcpackage) {
 | 
			
		||||
		my $src = $srcpackage{$srcname};
 | 
			
		||||
		my $path = $subdir{$srcname}.$srcname;
 | 
			
		||||
		my $variant_default;
 | 
			
		||||
		my @srcdeps;
 | 
			
		||||
 | 
			
		||||
@@ -429,30 +428,30 @@ sub gen_package_mk() {
 | 
			
		||||
			my $config = '';
 | 
			
		||||
			$config = "\$(CONFIG_PACKAGE_$pkg->{name})" unless $pkg->{buildonly};
 | 
			
		||||
 | 
			
		||||
			$pkg->{prereq} and print "prereq-$config += $path\n";
 | 
			
		||||
			$pkg->{prereq} and print "prereq-$config += $src->{path}\n";
 | 
			
		||||
 | 
			
		||||
			next if $pkg->{buildonly};
 | 
			
		||||
 | 
			
		||||
			print "package-$config += $path\n";
 | 
			
		||||
			print "package-$config += $src->{path}\n";
 | 
			
		||||
 | 
			
		||||
			if ($pkg->{variant}) {
 | 
			
		||||
				if (!defined($variant_default) or $pkg->{variant_default}) {
 | 
			
		||||
					$variant_default = $pkg->{variant};
 | 
			
		||||
				}
 | 
			
		||||
				print "\$(curdir)/$path/variants += \$(if $config,$pkg->{variant})\n";
 | 
			
		||||
				print "\$(curdir)/$src->{path}/variants += \$(if $config,$pkg->{variant})\n";
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (defined($variant_default)) {
 | 
			
		||||
			print "\$(curdir)/$path/default-variant := $variant_default\n";
 | 
			
		||||
			print "\$(curdir)/$src->{path}/default-variant := $variant_default\n";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		unless (grep {!$_->{buildonly}} @{$src->{packages}}) {
 | 
			
		||||
			print "package- += $path\n";
 | 
			
		||||
			print "package- += $src->{path}\n";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (@{$src->{buildtypes}} > 0) {
 | 
			
		||||
			print "buildtypes-$path = ".join(' ', @{$src->{buildtypes}})."\n";
 | 
			
		||||
			print "buildtypes-$src->{path} = ".join(' ', @{$src->{buildtypes}})."\n";
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		foreach my $dep (@{$src->{builddepends}}, map { @{$_->{depends}} } @{$src->{packages}}) {
 | 
			
		||||
@@ -489,9 +488,9 @@ sub gen_package_mk() {
 | 
			
		||||
							$src->{makefile}, $type, $pkg_dep->{src}{name}, $deptype, $pkg_dep->{makefile}, $deptype;
 | 
			
		||||
						next;
 | 
			
		||||
					}
 | 
			
		||||
					$idx = $pkg_dep->{subdir}.$pkg_dep->{src}{name};
 | 
			
		||||
					$idx = $pkg_dep->{src}{path};
 | 
			
		||||
				} elsif (defined($srcpackage{$dep})) {
 | 
			
		||||
					$idx = $subdir{$dep}.$dep;
 | 
			
		||||
					$idx = $srcpackage{$dep}{path};
 | 
			
		||||
				} else {
 | 
			
		||||
					next;
 | 
			
		||||
				}
 | 
			
		||||
@@ -503,7 +502,7 @@ sub gen_package_mk() {
 | 
			
		||||
			}
 | 
			
		||||
			my $depline = join(" ", sort keys %deplines);
 | 
			
		||||
			if ($depline) {
 | 
			
		||||
				$line .= "\$(curdir)/$path/$type/compile += $depline\n";
 | 
			
		||||
				$line .= "\$(curdir)/$src->{path}/$type/compile += $depline\n";
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
@@ -543,9 +542,9 @@ sub gen_package_mk() {
 | 
			
		||||
							$src->{makefile}, $pkg_dep->{src}{name}, $deptype, $pkg_dep->{makefile}, $deptype;
 | 
			
		||||
						next;
 | 
			
		||||
					}
 | 
			
		||||
					$idx = $pkg_dep->{subdir}.$pkg_dep->{src}{name};
 | 
			
		||||
					$idx = $pkg_dep->{src}{path};
 | 
			
		||||
				} elsif (defined($srcpackage{$dep})) {
 | 
			
		||||
					$idx = $subdir{$dep}.$dep;
 | 
			
		||||
					$idx = $srcpackage{$dep}{path};
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				if ($idx) {
 | 
			
		||||
@@ -573,7 +572,7 @@ sub gen_package_mk() {
 | 
			
		||||
		}
 | 
			
		||||
		my $depline = join(" ", sort keys %deplines);
 | 
			
		||||
		if ($depline) {
 | 
			
		||||
			$line .= "\$(curdir)/$path/compile += $depline\n";
 | 
			
		||||
			$line .= "\$(curdir)/$src->{path}/compile += $depline\n";
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user