| 
														
															@@ -2,13 +2,14 @@ package metadata; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 use base 'Exporter'; 
														 | 
														
														 | 
														
															 use base 'Exporter'; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 use strict; 
														 | 
														
														 | 
														
															 use strict; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 use warnings; 
														 | 
														
														 | 
														
															 use warnings; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															-our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig clear_packages parse_package_metadata get_multiline); 
														 | 
														
														 | 
														
															 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+our @EXPORT = qw(%package %srcpackage %category %subdir %preconfig %features clear_packages parse_package_metadata get_multiline); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 our %package; 
														 | 
														
														 | 
														
															 our %package; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 our %preconfig; 
														 | 
														
														 | 
														
															 our %preconfig; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 our %srcpackage; 
														 | 
														
														 | 
														
															 our %srcpackage; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 our %category; 
														 | 
														
														 | 
														
															 our %category; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 our %subdir; 
														 | 
														
														 | 
														
															 our %subdir; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+our %features; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 sub get_multiline { 
														 | 
														
														 | 
														
															 sub get_multiline { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $fh = shift; 
														 | 
														
														 | 
														
															 	my $fh = shift; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -28,11 +29,13 @@ sub clear_packages() { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	%package = (); 
														 | 
														
														 | 
														
															 	%package = (); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	%srcpackage = (); 
														 | 
														
														 | 
														
															 	%srcpackage = (); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	%category = (); 
														 | 
														
														 | 
														
															 	%category = (); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	%features = (); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 } 
														 | 
														
														 | 
														
															 } 
														 | 
													
												
											
												
													
														| 
														 | 
														
															  
														 | 
														
														 | 
														
															  
														 | 
													
												
											
												
													
														| 
														 | 
														
															 sub parse_package_metadata($) { 
														 | 
														
														 | 
														
															 sub parse_package_metadata($) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $file = shift; 
														 | 
														
														 | 
														
															 	my $file = shift; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $pkg; 
														 | 
														
														 | 
														
															 	my $pkg; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+	my $feature; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $makefile; 
														 | 
														
														 | 
														
															 	my $makefile; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $preconfig; 
														 | 
														
														 | 
														
															 	my $preconfig; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 	my $subdir; 
														 | 
														
														 | 
														
															 	my $subdir; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -55,6 +58,7 @@ sub parse_package_metadata($) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}; 
														 | 
														
														 | 
														
															 		}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		next unless $src; 
														 | 
														
														 | 
														
															 		next unless $src; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/^Package:\s*(.+?)\s*$/ and do { 
														 | 
														
														 | 
														
															 		/^Package:\s*(.+?)\s*$/ and do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			undef $feature; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			$pkg = {}; 
														 | 
														
														 | 
														
															 			$pkg = {}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			$pkg->{src} = $src; 
														 | 
														
														 | 
														
															 			$pkg->{src} = $src; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			$pkg->{makefile} = $makefile; 
														 | 
														
														 | 
														
															 			$pkg->{makefile} = $makefile; 
														 | 
													
												
											
										
											
												
													
														 | 
														
															@@ -69,6 +73,24 @@ sub parse_package_metadata($) { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			$package{$1} = $pkg; 
														 | 
														
														 | 
														
															 			$package{$1} = $pkg; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 			push @{$srcpackage{$src}}, $pkg; 
														 | 
														
														 | 
														
															 			push @{$srcpackage{$src}}, $pkg; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		}; 
														 | 
														
														 | 
														
															 		}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		/^Feature:\s*(.+?)\s*$/ and do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			undef $pkg; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			$feature = {}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			$feature->{name} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			$feature->{priority} = 0; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		$feature and do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			/^Target-Name:\s*(.+?)\s*$/ and do { 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				$features{$1} or $features{$1} = []; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+				push @{$features{$1}}, $feature; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			/^Target-Title:\s*(.+?)\s*$/ and $feature->{target_title} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			/^Feature-Priority:\s*(\d+)\s*$/ and $feature->{priority} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			/^Feature-Name:\s*(.+?)\s*$/ and $feature->{title} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			/^Feature-Description:/ and $feature->{description} = get_multiline(\*FILE, "\t\t\t"); 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+			next; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		}; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 
														 | 
														
														 | 
														
															+		next unless $pkg; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/^Version: \s*(.+)\s*$/ and $pkg->{version} = $1; 
														 | 
														
														 | 
														
															 		/^Version: \s*(.+)\s*$/ and $pkg->{version} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/^Title: \s*(.+)\s*$/ and $pkg->{title} = $1; 
														 | 
														
														 | 
														
															 		/^Title: \s*(.+)\s*$/ and $pkg->{title} = $1; 
														 | 
													
												
											
												
													
														| 
														 | 
														
															 		/^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1; 
														 | 
														
														 | 
														
															 		/^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1; 
														 |