AIX-LPP
view release on metacpan or search on metacpan
LPP/lpp_name.pm view on Meta::CPAN
keys %{$self->{FILESET}} );
}
sub fileset {
my $self = shift;
my $fsname = shift;
my %param = @_;
if ( $#_ == -1 ) {
return ($self->{FILESET}{$fsname}{NAME},$self->{FILESET}{$fsname}{VRMF},
$self->{FILESET}{$fsname}{DISK},$self->{FILESET}{$fsname}{BOSBOOT},
$self->{FILESET}{$fsname}{CONTENT},$self->{FILESET}{$fsname}{LANG},
$self->{FILESET}{$fsname}{DESCRIPTION},
$self->{FILESET}{$fsname}{COMMENTS});
} else {
if ( ! exists $self->{FILESET}{$fsname} ) {
$self->{FILESET}{$fsname} = {
NAME => $fsname,
VRMF => $param{VRMF},
DISK => $param{DISK},
BOSBOOT => $param{BOSBOOT},
CONTENT => $param{CONTENT},
LANG => $param{LANG},
DESCRIPTION => $param{DESCRIPTION},
COMMENTS => $param{COMMENTS},
REQ => [ ],
SIZEINFO => { }
};
} else {
}
}
return ( $self->{FILESET}{$fsname}{NAME},
$self->{FILESET}{$fsname}{VRMF},
$self->{FILESET}{$fsname}{DISK},
$self->{FILESET}{$fsname}{BOSBOOT},
$self->{FILESET}{$fsname}{CONTENT},
$self->{FILESET}{$fsname}{LANG},
$self->{FILESET}{$fsname}{DESCRIPTION},
$self->{FILESET}{$fsname}{COMMENTS});
}
sub sizeinfo {
my $self = shift;
my $fset = shift;
my $size_ref = shift;
$self->{FILESET}{$fset}{SIZEINFO} = $size_ref;
return $self->{FILESET}{$fset}{SIZEINFO};
}
sub requisites {
my $self = shift;
my $fset = shift;
my $ref_req = shift;
$self->{FILESET}{$fset}{REQ} = $ref_req;
return $self->{FILESET}{$fset}{REQ};
}
sub validate {
}
sub read {
my $class = shift;
my $fh = shift;
my $self = {};
bless $self, $class;
chomp (my $line = <$fh>);
my ($format,$platform,$type,$name,$token) = split / /, $line;
$self->lpp(NAME => $name, FORMAT => $format, TYPE => $type,
PLATFORM => $platform);
chomp ($line = <$fh>);
# add while loop here to process fileset headers
my ($fsn,$vrmf,$disk,$bosboot,$content,$lang,@desc) = split / /, $line;
$self->fileset($fsn, NAME => $fsn,VRMF => $vrmf,DISK => $disk,
BOSBOOT => $bosboot, CONTENT => $content, LANG => $lang,
DESCRIPTION => join ' ', @desc);
chomp ($line = <$fh>) until $line =~ /^\[/;
chomp ($line = <$fh>);
FSDATA: { do {
chomp $line;
my @reqs;
last if $line =~ /^\]/;
REQS: { do {
push @reqs, [ split (/ /, $line) ];
chomp ($line = <$fh>);
} until $line =~ /^%/; }
$self->requisites($fsn,\@reqs);
chomp ($line = <$fh>);
SIZEINFO: { do {
my ($loc,@size) = split (/ /, $line);
$self->{FILESET}{$fsn}{SIZEINFO}{$loc} = join ' ', @size;
chomp ($line = <$fh>);
} until $line =~ /^%/; }
chomp ($line = <$fh>);
THIRD: { do {
} until $line =~ /^%/; }
chomp ($line = <$fh>);
FOURTH: { do {
} until $line =~ /^%/; }
chomp ($line = <$fh>);
FIFTH: { do {
} until $line =~ /^%/; }
} while ($line = <$fh>); }
return $self;
}
LPP/lpp_name.pm view on Meta::CPAN
$x = lpp_name->new();
$x->lpp(NAME => 'test.lpp',TYPE => 'I',PLATFORM => 'R',FORMAT => '4');
$x->fileset('test.lpp.rte', VRMF => '1.0.0.0',DISK => '01',BOSBOOT => 'N',
CONTENT => 'I', LANG => 'en_US', DESCRIPTION => 'test.lpp description',
COMMENTS => '');
my @reqs = [ ['*prereq','bos.rte','4.3.3.0'] ];
$x->requisites('test.lpp.rte', \@reqs);
my %sizes = { '/usr' => '5', '/etc' => '1' };
$x->sizeinfo('test.lpp.rte', \%sizes);
$x->write(\*out_fh);
or
$x = lpp_name->read(\*in_fh);
my %lppdata = $x->lpp();
my %fsdata = $x->fileset('test.lpp.rte');
my $req_ref = $x->requisites('test.lpp.rte');
my $size_ref = $x->sizeinfo('test.lpp.rte');
=head1 DESCRIPTION
AIX::LPP::lpp_name is a class module for reading, creating, and modifying
AIX lpp_name files. The lpp_name file is an internal component of AIX
packages (called LPPs). LPPs consist of filesets and information about
installing them. This information can include: prerequisites, filesystem
requirements, copywrites, etc..
=head1 CONSTRUCTOR METHODS
=over 4
=item $x = lpp_name->new();
The simple form of the new constructor method creates an empty lpp_name
object. This object is then modified using lpp() and fileset() object
methods. Basic LPP information can also be passed to new() as follows: ...
=item $x = lpp_name->read(\*in_fh);
Alternatively, a new lpp_name object can be create by reading data from
an lpp_name formatted file. read() is both a class method and an instance
method (or it will be when I'm finished).
=head1 OBJECT METHODS
=over 4
=item lpp()
=item fileset()
=item requisites()
=item sizeinfo()
=item read()
=item write()
=item validate()
Not yet implemented.
=back
=head1 AUTHOR
Charles Ritter, critter@aixadm.org
=head1 SEE ALSO
The installp manpage, IBM LPP package format documentation.
( run in 0.653 second using v1.01-cache-2.11-cpan-140bd7fdf52 )