-sub parse_package_metadata() {
- my $pkg;
- my $makefile;
- my $preconfig;
- my $subdir;
- my $src;
- while (<>) {
- chomp;
- /^Source-Makefile: \s*((.+\/)([^\/]+)\/Makefile)\s*$/ and do {
- $makefile = $1;
- $subdir = $2;
- $src = $3;
- $subdir =~ s/^package\///;
- $subdir{$src} = $subdir;
- $srcpackage{$src} = [];
- undef $pkg;
- };
- /^Package:\s*(.+?)\s*$/ and do {
- $pkg = {};
- $pkg->{src} = $src;
- $pkg->{makefile} = $makefile;
- $pkg->{name} = $1;
- $pkg->{default} = "m if ALL";
- $pkg->{depends} = [];
- $pkg->{builddepends} = [];
- $pkg->{subdir} = $subdir;
- $package{$1} = $pkg;
- push @{$srcpackage{$src}}, $pkg;
- };
- /^Version: \s*(.+)\s*$/ and $pkg->{version} = $1;
- /^Title: \s*(.+)\s*$/ and $pkg->{title} = $1;
- /^Menu: \s*(.+)\s*$/ and $pkg->{menu} = $1;
- /^Submenu: \s*(.+)\s*$/ and $pkg->{submenu} = $1;
- /^Submenu-Depends: \s*(.+)\s*$/ and $pkg->{submenudep} = $1;
- /^Default: \s*(.+)\s*$/ and $pkg->{default} = $1;
- /^Provides: \s*(.+)\s*$/ and do {
- my @vpkg = split /\s+/, $1;
- foreach my $vpkg (@vpkg) {
- $package{$vpkg} or $package{$vpkg} = { vdepends => [] };
- push @{$package{$vpkg}->{vdepends}}, $pkg->{name};
- }
- };
- /^Depends: \s*(.+)\s*$/ and $pkg->{depends} = [ split /\s+/, $1 ];
- /^Build-Depends: \s*(.+)\s*$/ and $pkg->{builddepends} = [ split /\s+/, $1 ];
- /^Category: \s*(.+)\s*$/ and do {
- $pkg->{category} = $1;
- defined $category{$1} or $category{$1} = {};
- defined $category{$1}->{$src} or $category{$1}->{$src} = [];
- push @{$category{$1}->{$src}}, $pkg;
- };
- /^Description: \s*(.*)\s*$/ and $pkg->{description} = "\t\t $1\n". get_multiline("\t\t ");
- /^Config: \s*(.*)\s*$/ and $pkg->{config} = "$1\n".get_multiline();
- /^Prereq-Check:/ and $pkg->{prereq} = 1;
- /^Preconfig:\s*(.+)\s*$/ and do {
- my $pkgname = $pkg->{name};
- $preconfig{$pkgname} or $preconfig{$pkgname} = [];
- $preconfig = {
- id => $1
- };
- push @{$preconfig{$pkgname}}, $preconfig;
- };
- /^Preconfig-Type:\s*(.*?)\s*$/ and $preconfig->{type} = $1;
- /^Preconfig-Label:\s*(.*?)\s*$/ and $preconfig->{label} = $1;
- /^Preconfig-Default:\s*(.*?)\s*$/ and $preconfig->{default} = $1;
- }
- return %category;
-}
-