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@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/%%7Bname%7D-%%7Bversion%7D%%7B?prerel%7D.tar.bz2 # 389-ds-git.sh should be used to generate the source tarball from git
389-commits@lists.fedoraproject.org