X-Git-Url: https://git.deb.at/?a=blobdiff_plain;f=lib%2FPackages%2FSrcPage.pm;h=7fc0e270584867877efc2fb8de68d8fd3d1dc34a;hb=994eceb69bd5a8865a51e00b3cfb1c7a1f03f78e;hp=e3e6f575c7820ec1e5d4dccc252359322f9dbef1;hpb=80d1b5c09c823bc5154897d2f7c5b990f576b727;p=deb%2Fpackages.git diff --git a/lib/Packages/SrcPage.pm b/lib/Packages/SrcPage.pm index e3e6f57..7fc0e27 100644 --- a/lib/Packages/SrcPage.pm +++ b/lib/Packages/SrcPage.pm @@ -4,6 +4,7 @@ use strict; use warnings; use Data::Dumper; +use Locale::gettext; use Deb::Versions; use Packages::CGI; use Packages::Page qw( :all ); @@ -22,8 +23,6 @@ sub merge_data { return $self->merge_package( \%data ); } -sub gettext { return $_[0]; } - our @DEP_FIELDS = qw( build-depends build-depends-indep build-conflicts build-conflicts-indep); sub merge_package { @@ -32,11 +31,11 @@ sub merge_package { ($data->{package} && $data->{suite} && $data->{archive}) || return; $self->{package} ||= $data->{package}; ($self->{package} eq $data->{package}) || return; - debug( "merge package $data->{package}/$data->{version} into $self (".($self->{version}||'').")", 2 ); + debug( "merge package $data->{package}/$data->{version} into $self (".($self->{version}||'').")", 2 ) if DEBUG; if (!$self->{version} || (version_cmp( $data->{version}, $self->{version} ) > 0)) { - debug( "added package is newer, replacing old information" ); + debug( "added package is newer, replacing old information" ) if DEBUG; $self->{data} = $data; @@ -111,7 +110,31 @@ sub get_version_string { sub get_dep_field { my ($self, $dep_field) = @_; - return $self->{dep_fields}{$dep_field}[1]; + my @deps; + foreach my $dep (@{$self->{dep_fields}{$dep_field}[1]}) { + my @or_deps; + foreach my $or_dep ( @$dep ) { + my $p_name = $or_dep->[0]; + my $p_version = $or_dep->[1] ? "$or_dep->[1] $or_dep->[2]" : undef; + my $arch_neg; + my $arch_str = ''; + if ($or_dep->[3] && @{$or_dep->[3]}) { + # as either all or no archs have to be prepended with + # exlamation marks, use the first and delete the others + if ($or_dep->[3][0] =~ /^!/) { + $arch_neg = 1; + foreach (@{$or_dep->[3]}) { + $_ =~ s/^!//go; + } + } + $arch_str = join(" ",sort(@{$or_dep->[3]})); + } + + push @or_deps, [ $p_name, $p_version, $arch_neg, $arch_str ]; + } + push @deps, [ 0, @or_deps ]; + } + return \@deps; } 1;