1 package Fedora
::Rebuild
::Package
::ListLog
;
4 use version
0.77; our $VERSION = version
->declare("v0.12.1");
16 Fedora::Rebuild::Package::ListLog - Append a package name to a file
22 use Fedora::Rebuild::Package;
23 my $package = Fedora::Rebuild::Package->new(...);
24 $package->provides(shared_clone(...));
28 my $log = Fedora::Rebuild::Package::ListLog->new(file => 'file');
30 # Log the package into a file
33 # Here the log file has been closed
37 The class allows to append a L<Fedora::Rebuild::Package> name into a file in
42 =head2 new(file => $file_name)
44 This class method appends the $package name into the $file_name. Mandatory
45 attribute is I<log>, a file where to log the package names to.
55 # Private log file descriptor
66 if (! defined $self->file || $self->file eq '') {
67 croak
"Invalid `file' attributed passed to ListLog constructor";
73 my $file = IO
::Handle
->new();
74 open($file, '>>', $self->file) or
75 croak
"Could not open `" . $self->file . "' for appending: $!";
81 Append L<Fedora::Rebuild::Package> package name into the log file. This
87 my ($self, $package) = @_;
89 flock($self->logfd, LOCK_EX
) or
90 croak
"Could not lock `" . $self->file . "': $!";
92 $self->logfd->print($package->name . "\n") or
93 croak
"Could not write data into `" . $self->file . "': $!";
94 $self->logfd->flush && $self->logfd->sync or
95 croak
"Could not flush `" . $self->file . "': $!";
97 flock($self->logfd, LOCK_UN
) or
98 croak
"Could not unlock `" . $self->file . "': $!";
104 close($self->logfd) or
105 croak
"Could not close `" . $self->file . "': $!";