ldap/admin/src/logconv.pl | 20 +++++++++++++++++++-
rpm/389-ds-base.spec.in | 3 +++
2 files changed, 22 insertions(+), 1 deletion(-)
New commits:
commit 3414c4eb8416d47e18013706c0d31cb762cdd31e
Author: Rich Megginson <rmeggins(a)redhat.com>
Date: Mon Jul 13 18:27:50 2015 -0600
Ticket #48224 - logconv.pl should handle *.tar.xz, *.txz, *.xz log files
https://fedorahosted.org/389/ticket/48224
Reviewed by: ???
Branch: 389-ds-base-1.3.3
Fix Description: There is no xz support by default, the perl module
IO::Uncompress::UnXz is required for that. Also, Tar::Archive can't
handle xz files by default, so they have to be uncompressed first.
This will also need a spec file change:
Requires: perl-IO-Compress
Requires: perl-IO-Compress-Lzma
Platforms tested: Fedora 21
Flag Day: no
Doc impact: no
(cherry picked from commit d1b0acd12faa620774c66044f91e509ae175e4a1)
(cherry picked from commit 4f3b802fac46adfa8fd5cf49443b875f136fb19c)
Conflicts:
ldap/admin/src/logconv.pl
diff --git a/ldap/admin/src/logconv.pl b/ldap/admin/src/logconv.pl
index e4bbfbc..daff276 100755
--- a/ldap/admin/src/logconv.pl
+++ b/ldap/admin/src/logconv.pl
@@ -424,14 +424,26 @@ my $totalLineCount = 0;
sub isTarArchive {
local $_ = shift;
+ if (/\.txz$/ || /\.tar.xz$/) {
+ use IO::Uncompress::UnXz;
+ }
return /\.tar$/ || /\.tar\.bz2$/ || /\.tar.gz$/ || /\.tar.xz$/ || /\.tgz$/ || /\.tbz$/
|| /\.txz$/;
}
sub isCompressed {
local $_ = shift;
+ if (/\.xz$/) {
+ use IO::Uncompress::UnXz;
+ }
return /\.gz$/ || /\.bz2$/ || /\.xz$/;
}
+# Tar::Archive can't grok xz, so have to uncompress first
+sub tarNeedsUncompress {
+ local $_ = shift;
+ return /\.tar.xz$/ || /\.txz$/;
+}
+
$Archive::Tar::WARN = 0; # so new will shut up when reading a regular file
for (my $count=0; $count < $file_count; $count++){
my $logname = $files[$count];
@@ -457,7 +469,13 @@ for (my $count=0; $count < $file_count; $count++){
my $comp = 0;
if (isTarArchive($logname)) {
$tar = Archive::Tar->new();
- $tariter = Archive::Tar->iter($logname);
+ if (tarNeedsUncompress($logname)) {
+ my $TARFH = new IO::Uncompress::AnyUncompress $logname or
+ do { openFailed($AnyUncompressError, $logname); next };
+ $tariter = Archive::Tar->iter($TARFH);
+ } else {
+ $tariter = Archive::Tar->iter($logname);
+ }
if (!$tariter) {
print "$logname is not a valid tar archive, or compression is unrecognized:
$!\n";
next;
diff --git a/rpm/389-ds-base.spec.in b/rpm/389-ds-base.spec.in
index 17a1f86..3b7c072 100644
--- a/rpm/389-ds-base.spec.in
+++ b/rpm/389-ds-base.spec.in
@@ -110,6 +110,9 @@ Requires: perl-Socket6
Requires: perl-Socket
%endif
Requires: perl-NetAddr-IP
+# for logconv compressed file support
+Requires: perl-IO-Compress
+Requires: perl-IO-Compress-Lzma
Source0:
http://port389.org/sources/%{name}-%{version}%{?prerel}.tar.bz2
# 389-ds-git.sh should be used to generate the source tarball from git