OpenPKG CVS Repository http://cvs.openpkg.org/ ____________________________________________________________________________
Server: cvs.openpkg.org Name: Michael van Elst Root: /e/openpkg/cvs Email: [EMAIL PROTECTED] Module: openpkg-re Date: 20-Nov-2002 17:29:14 Branch: HEAD Handle: 2002112016291400 Modified files: openpkg-re openpkg-build Log: retrieve option list from index for new targets Summary: Revision Changes Path 1.36 +32 -12 openpkg-re/openpkg-build ____________________________________________________________________________ Index: openpkg-re/openpkg-build ============================================================ $ cvs diff -u -r1.35 -r1.36 openpkg-build --- openpkg-re/openpkg-build 20 Nov 2002 16:05:19 -0000 1.35 +++ openpkg-re/openpkg-build 20 Nov 2002 16:29:14 -0000 1.36 @@ -323,9 +323,16 @@ } sub get_with ($;$) { - my($pkg,$fn) = @_; - my(@l) = defined $fn ? `$RPM_NPRIV -qi -p $fn` : `$RPM_NPRIV -qi $pkg`; - my(%with); + my($t,$fn) = @_; + my(@l,%with); + + if (exists $t->{desc}) { + @l = split(/\n+/, $t->{desc}); + } elsif (defined $fn) { + @l = `$RPM_NPRIV -qi -p $fn`; + } else { + @l = `$RPM_NPRIV -qi $t->{name}`; + } %with = map { /--define\s*'(\S+)\s+(\S+?)'/ } @l; @@ -382,7 +389,7 @@ my($section); my($name,$version); - my($href,$release); + my($href,$release,$desc); my(@prereq,@bprereq); my(@provides,@conflicts,$rec); my($tag,$cond,$body); @@ -398,6 +405,7 @@ $href = $1; $name = undef; $release = undef; + $desc = ''; @prereq = (); @bprereq = (); @provides = (); @@ -406,11 +414,16 @@ next unless defined $href; ($tag,$cond,$body) = /<(\/?[\w:]+)\s*(?:cond="([^"]+)")?>([^<]*)/; - next unless $tag; - $useit = conditional($cond,$with); + $useit = defined $tag && conditional($cond,$with); - if ($tag eq 'PreReq') { + if ($tag eq 'Description') { + $section = 'description'; + } elsif ($tag eq '/Description') { + $section = undef; + } elsif ($section eq 'description') { + $desc .= $_; + } elsif ($tag eq 'PreReq') { $section = 'prereq' if $useit; } elsif ($tag eq '/PreReq') { $section = undef; @@ -461,7 +474,8 @@ depends => [ @bprereq ], keeps => [ @prereq ], conflicts => [ @conflicts ], - href => $href + href => $href, + desc => $desc }; foreach (@provides) { @@ -499,7 +513,8 @@ release => $_->{'Release'}->[0], depends => $_->{'BuildPreReq'}->[0]->{'rdf:bag'}->[0]->{'rdf:li'}, keeps => $_->{'PreReq'}->[0]->{'rdf:bag'}->[0]->{'rdf:li'}, - href => $_->{'href'} + href => $_->{'href'}, + desc => $_->{'Description'}->[0] }; foreach (@provides) { @@ -653,7 +668,7 @@ my($k,$v); unless ($target->{OPTIONS}) { - $target->{OPTIONS} = get_with($target->{'name'}); + $target->{OPTIONS} = get_with($target); } $iwith = $target->{OPTIONS}; @@ -675,7 +690,7 @@ my($k,$v); unless ($target->{OPTIONS}) { - $target->{OPTIONS} = get_with($target->{'name'}); + $target->{OPTIONS} = get_with($target); } $iwith = $target->{OPTIONS}; @@ -943,7 +958,7 @@ my($t, $fn) = @_; my(%target) = %$t; - $target{OPTIONS} = get_with($t->{name}, $fn); + $target{OPTIONS} = get_with($t, $fn); return \%target; } @@ -959,6 +974,11 @@ while (($k,$v) = each %$new) { $old->{$k} = $v if exists $old->{$k}; } + $old = { + map { $_ => $old->{$_} } + grep { $old->{$_} !~ /\%/ } + keys %$old + }; } else { $old = $new; } ______________________________________________________________________ The OpenPKG Project www.openpkg.org CVS Repository Commit List [EMAIL PROTECTED]