copy things later: first pass just finds existing things in the plist,
then we try to register extra shit to the `nearest' item, and then we populate the new plist. also integrate shell marker fix from okan@ (forgot about that)
This commit is contained in:
parent
da02d4b151
commit
4ffd43c84c
@ -1,5 +1,5 @@
|
||||
#! /usr/bin/perl
|
||||
# $OpenBSD: make-plist,v 1.122 2008/10/30 10:51:14 espie Exp $
|
||||
# $OpenBSD: make-plist,v 1.123 2008/10/30 11:12:25 espie Exp $
|
||||
# Copyright (c) 2004-2008 Marc Espie <espie@openbsd.org>
|
||||
#
|
||||
# Permission to use, copy, modify, and distribute this software for any
|
||||
@ -347,11 +347,8 @@ our @ISA=qw(OpenBSD::PackingElement);
|
||||
sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
if (defined $plist->{state}->{lastobject}) {
|
||||
$plist->{state}->{lastobject}->tag_along($self);
|
||||
} else {
|
||||
$plist->{tag_marker}->tag_along($self);
|
||||
}
|
||||
|
||||
$plist->{state}->{lastreal}->tag_along($self);
|
||||
}
|
||||
|
||||
sub deduce_fragment
|
||||
@ -422,6 +419,9 @@ sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
$plist->{state}->{lastobject} = $self;
|
||||
if (defined $self->{accounted_for}) {
|
||||
$plist->{state}->{lastreal} = $self;
|
||||
}
|
||||
}
|
||||
|
||||
package OpenBSD::PackingElement::Dir;
|
||||
@ -429,6 +429,9 @@ sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
$plist->{state}->{lastobject} = $self;
|
||||
if (defined $self->{accounted_for}) {
|
||||
$plist->{state}->{lastreal} = $self;
|
||||
}
|
||||
}
|
||||
|
||||
package OpenBSD::PackingElement::Sample;
|
||||
@ -436,9 +439,14 @@ sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
if (defined $self->{copyfrom}) {
|
||||
if (!defined $self->{copyfrom}->{accounted_for}) {
|
||||
print "Sample ", $self->stringize,
|
||||
" no longer refers to anything\n";
|
||||
}
|
||||
$self->{copyfrom}->tag_along($self);
|
||||
} else {
|
||||
print "Bogus sample (unattached) detected\n";
|
||||
print "Bogus sample (unattached) detected ", $self->stringize,
|
||||
"\n";
|
||||
}
|
||||
}
|
||||
|
||||
@ -446,21 +454,19 @@ package OpenBSD::PackingElement::Sysctl;
|
||||
sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
if (defined $plist->{state}->{lastobject}) {
|
||||
$plist->{state}->{lastobject}->tag_along($self);
|
||||
} else {
|
||||
$plist->{tag_marker}->tag_along($self);
|
||||
}
|
||||
|
||||
$plist->{state}->{lastreal}->tag_along($self);
|
||||
}
|
||||
|
||||
package OpenBSD::PackingElement::ExeclikeAction;
|
||||
sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
# XXX to be revisited
|
||||
if (defined $plist->{state}->{lastobject}) {
|
||||
$plist->{state}->{lastobject}->tag_along($self);
|
||||
} else {
|
||||
$plist->{tag_marker}->tag_along($self);
|
||||
$plist->{lastreal}->tag_along($self);
|
||||
}
|
||||
}
|
||||
|
||||
@ -468,11 +474,7 @@ package OpenBSD::PackingElement::Sampledir;
|
||||
sub register
|
||||
{
|
||||
my ($self, $plist) = @_;
|
||||
if (defined $plist->{state}->{lastobject}) {
|
||||
$plist->{state}->{lastobject}->tag_along($self);
|
||||
} else {
|
||||
$plist->{tag_marker}->tag_along($self);
|
||||
}
|
||||
$plist->{state}->{lastreal}->tag_along($self);
|
||||
}
|
||||
|
||||
package OpenBSD::PackingElement::DirlikeObject;
|
||||
@ -566,8 +568,6 @@ sub parse_original_plist
|
||||
{
|
||||
my ($name, $sub, $all_plists) = @_;
|
||||
my $plist = create_packinglist($name, $sub);
|
||||
# place holder for extra stuff that comes before any file
|
||||
$plist->{tag_marker} = new OpenBSD::PackingElement('');
|
||||
# special reader for fragments
|
||||
$plist->fromfile($name,
|
||||
sub {
|
||||
@ -585,7 +585,6 @@ sub parse_original_plist
|
||||
}
|
||||
) or return;
|
||||
|
||||
delete $plist->{state}->{lastobject};
|
||||
$plist->add_to_haystack($plist, $haystack);
|
||||
# Try to handle fragments
|
||||
for my $item (@{$plist->{items}}) {
|
||||
@ -608,7 +607,6 @@ sub replaces
|
||||
$n->{original} = $orig;
|
||||
$orig->{replacement} = $n;
|
||||
$n->{filename} = $orig->{filename};
|
||||
$orig->{tag_marker}->clone_tags($n);
|
||||
}
|
||||
}
|
||||
|
||||
@ -657,7 +655,11 @@ sub create_object
|
||||
} elsif ($type eq "library") {
|
||||
return OpenBSD::PackingElement::Lib->new($short);
|
||||
} elsif ($type eq "binary") {
|
||||
return OpenBSD::PackingElement::Binary->new($short);
|
||||
if ($item->isa("OpenBSD::PackingElement::Shell")) {
|
||||
return OpenBSD::PackingElement::Shell->new($short);
|
||||
} else {
|
||||
return OpenBSD::PackingElement::Binary->new($short);
|
||||
}
|
||||
} else {
|
||||
if (defined $item) {
|
||||
if ($item->isa("OpenBSD::PackingElement::Shell")) {
|
||||
@ -934,24 +936,19 @@ for my $i (sort keys %$files) {
|
||||
for my $plist (@l) {
|
||||
my $orig = $plist->{original};
|
||||
if (defined $orig) {
|
||||
delete $orig->{state}->{lastobject};
|
||||
# place holder for extra stuff that comes before any file
|
||||
my $orphans = new OpenBSD::PackingElement('');
|
||||
$orig->{state}->{lastreal} = $orphans;
|
||||
$orig->register($orig);
|
||||
$orig->copy_annotations($plist);
|
||||
$orphans->clone_tags($plist);
|
||||
}
|
||||
if (!$plist->has('cvstags')) {
|
||||
OpenBSD::PackingElement::CVSTag->add($plist, '$OpenBSD'.'$');
|
||||
}
|
||||
}
|
||||
|
||||
#for my $i (sort keys %$files) {
|
||||
# if (defined $haystack->{$i}) {
|
||||
# print "$i: \n";
|
||||
# for my $item (@{$haystack->{$i}}) {
|
||||
# print "\t", ref($item), " ", $item->{plist}->{filename},"\n";
|
||||
# }
|
||||
# } else {
|
||||
# print "$i NOT FOUND\n";
|
||||
# }
|
||||
#}
|
||||
for my $i (sort keys %$files) {
|
||||
handle_file($files->{$i}, $haystack, \@l, $shared_only);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user