1 package Packages::SrcPage;
9 use Packages::Page qw( :all );
11 our @ISA = qw( Packages::Page );
13 #FIXME: change parameters so that we can use the version from Packages::Page
15 my ($self, $pkg, $version, $data) = @_;
17 my %data = ( package => $pkg,
21 $data =~ s/\n\s+/\377/g;
22 while ($data =~ /^(\S+):\s*(.*)\s*$/mg) {
23 my ($key, $value) = ($1, $2);
24 $key =~ tr [A-Z] [a-z];
27 # debug( "Merge package:\n".Dumper(\%data), 3 );
28 return $self->merge_package( \%data );
31 sub gettext { return $_[0]; }
33 our @DEP_FIELDS = qw( build-depends build-depends-indep
34 build-conflicts build-conflicts-indep);
36 my ($self, $data) = @_;
38 ($data->{package} && $data->{version}) || return;
39 $self->{package} ||= $data->{package};
40 ($self->{package} eq $data->{package}) || return;
41 debug( "merge package $data->{package}/$data->{version} into $self (".($self->{version}||'').")", 2 );
44 || (version_cmp( $data->{version}, $self->{version} ) > 0)) {
45 debug( "added package is newer, replacing old information" );
47 $self->{data} = $data;
50 if ($data->{maintainer} ||= '') {
51 push @uploaders, [ split_name_mail( $data->{maintainer} ) ];
53 if ($data->{uploaders}) {
54 my @up_tmp = split( /\s*,\s*/,
56 foreach my $up (@up_tmp) {
57 if ($up ne $data->{maintainer}) { # weed out duplicates
58 push @uploaders, [ split_name_mail( $up ) ];
62 $self->{uploaders} = \@uploaders;
66 foreach my $sf ( split( /\377/, $data->{files} ) ) {
69 push @{$self->{files}}, [ split( /\s+/, $sf) ];
73 foreach (@DEP_FIELDS) {
74 $self->normalize_dependencies( $_, $data );
77 $self->{version} = $data->{version};
81 #FIXME: should be mergable with the Packages::Page version
82 sub normalize_dependencies {
83 my ($self, $dep_field, $data) = @_;
85 my ($deps_norm, $deps) = parse_deps( $data->{$dep_field}||'' );
86 $self->{dep_fields}{$dep_field} =
87 [ $deps_norm, $deps ];
91 my ($self, $field) = @_;
93 return $self->{$field} if exists $self->{$field};
94 return $self->{data}{$field};
97 sub get_architectures {
102 my ($self, $field) = @_;
104 return $self->{data}{$field};
110 return [ $self->{version} ];
113 sub get_version_string {
116 my $versions = $self->get_versions;
118 return ($self->{version}, $versions);
122 my ($self, $dep_field) = @_;
124 return $self->{dep_fields}{$dep_field}[1];