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, $suite, $archive, $data) = @_;
17 my %data = split /\00/o, $data;
18 $data{package} = $pkg;
19 $data{suite} = $suite;
20 $data{archive} = $archive;
22 return $self->merge_package( \%data );
25 sub gettext { return $_[0]; }
27 our @DEP_FIELDS = qw( build-depends build-depends-indep
28 build-conflicts build-conflicts-indep);
30 my ($self, $data) = @_;
32 ($data->{package} && $data->{suite} && $data->{archive}) || return;
33 $self->{package} ||= $data->{package};
34 ($self->{package} eq $data->{package}) || return;
35 debug( "merge package $data->{package}/$data->{version} into $self (".($self->{version}||'').")", 2 );
38 || (version_cmp( $data->{version}, $self->{version} ) > 0)) {
39 debug( "added package is newer, replacing old information" );
41 $self->{data} = $data;
44 if ($data->{maintainer} ||= '') {
45 push @uploaders, [ split_name_mail( $data->{maintainer} ) ];
47 if ($data->{uploaders}) {
48 my @up_tmp = split( /\s*,\s*/,
50 foreach my $up (@up_tmp) {
51 if ($up ne $data->{maintainer}) { # weed out duplicates
52 push @uploaders, [ split_name_mail( $up ) ];
56 $self->{uploaders} = \@uploaders;
59 my @files = split /\01/so, $data->{files};
60 $self->{files} = \@files;
63 foreach (@DEP_FIELDS) {
64 $self->normalize_dependencies( $_, $data );
67 $self->{version} = $data->{version};
71 #FIXME: should be mergable with the Packages::Page version
72 sub normalize_dependencies {
73 my ($self, $dep_field, $data) = @_;
75 my ($deps_norm, $deps) = parse_deps( $data->{$dep_field}||'' );
76 $self->{dep_fields}{$dep_field} =
77 [ $deps_norm, $deps ];
81 my ($self, $field) = @_;
83 return $self->{$field} if exists $self->{$field};
84 return $self->{data}{$field};
87 sub get_architectures {
92 my ($self, $field) = @_;
94 return $self->{data}{$field};
100 return [ $self->{version} ];
103 sub get_version_string {
106 my $versions = $self->get_versions;
108 return ($self->{version}, $versions);
112 my ($self, $dep_field) = @_;
114 return $self->{dep_fields}{$dep_field}[1];