From fb0691e921a31a609894a9c33bc6b0cb26e6b0cc Mon Sep 17 00:00:00 2001 From: espie Date: Mon, 7 Nov 2011 16:03:19 +0000 Subject: [PATCH] share MULTI_PACKAGES. simplify the default case (SUBPACKAGE=-main). --- infrastructure/lib/DPB/PkgPath.pm | 43 +++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 8 deletions(-) diff --git a/infrastructure/lib/DPB/PkgPath.pm b/infrastructure/lib/DPB/PkgPath.pm index ab70b0c3896..8a0e2abe90a 100644 --- a/infrastructure/lib/DPB/PkgPath.pm +++ b/infrastructure/lib/DPB/PkgPath.pm @@ -1,5 +1,5 @@ # ex:ts=8 sw=4: -# $OpenBSD: PkgPath.pm,v 1.17 2011/11/07 13:23:09 espie Exp $ +# $OpenBSD: PkgPath.pm,v 1.18 2011/11/07 16:03:19 espie Exp $ # # Copyright (c) 2010 Marc Espie # @@ -39,8 +39,12 @@ sub create for my $v (@list) { if ($v =~ m/^\-/) { die "$fullpkgpath has >1 multi\n" - if defined $o->{m}; - $o->{m} = $v; + if exists $o->{m}; + if ($v eq '-main') { + $o->{m} = undef; + } else { + $o->{m} = $v; + } } else { # XXX rely on stuff existing, no need to spring # an empty hash into existence @@ -101,6 +105,8 @@ sub fullpkgpath my @list = $self->basic_list; if (defined $self->{m}) { push(@list, $self->{m}); + } elsif (exists $self->{m}) { + push(@list, '-main'); } return join (',', @list); } @@ -111,6 +117,18 @@ sub pkgpath return $self->{p}; } +sub multi +{ + my $self = shift; + if (defined $self->{m}) { + return $self->{m}; + } elsif (exists $self->{m}) { + return '-main'; + } else { + return undef; + } +} + sub logname { &fullpkgpath; @@ -225,8 +243,8 @@ sub handle_equivalences sub zap_default { my ($self, $subpackage) = @_; - return $self unless defined $subpackage and defined $self->{m}; - if ($subpackage->string eq $self->{m}) { + return $self unless defined $subpackage and defined $self->multi; + if ($subpackage->string eq $self->multi) { my $o = bless {p => $self->{p}}, ref($self); if (defined $self->{f}) { $o->{f} = $self->{f}; @@ -244,7 +262,7 @@ sub handle_default_flavor if (!defined $self->{f}) { my $m = bless { p => $self->{p}, f => $self->{info}{FLAVOR}}, ref($self); - if (defined $self->{m}) { + if (exists $self->{m}) { $m->{m} = $self->{m}; } $m = $m->may_create($self, $h); @@ -288,6 +306,7 @@ sub merge_depends { my ($class, $h) = @_; my $global = bless {}, "AddDepends"; + my $multi; for my $v (values %$h) { my $info = $v->{info}; if (defined $info->{DIST}) { @@ -296,6 +315,10 @@ sub merge_depends bless $info->{FDEPENDS}, "AddDepends"; } } + # share ! + if (defined $info->{MULTI_PACKAGES}) { + $multi = $info->{MULTI_PACKAGES}; + } # XXX don't grab dependencies for IGNOREd stuff next if defined $info->{IGNORE}; @@ -321,10 +344,14 @@ sub merge_depends } if (values %$global > 0) { for my $v (values %$h) { - my $info = $v->{info}; # remove stuff that depends on itself delete $global->{$v}; - $info->{DEPENDS} = $global; + $v->{info}{DEPENDS} = $global; + } + } + if (defined $multi) { + for my $v (values %$h) { + $v->{info}{MULTI_PACKAGES} = $multi; } } }