File perl-File-Unpack.spec of Package perl-File-Unpack

#
# spec file for package perl-File-Unpack
#
# Copyright (c) 2018 SUSE LINUX GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#


Name:           perl-File-Unpack
Version:        0.70
Release:        0%{?dist}
Summary:        An strong archive file unpacker, based on mime-types
License:        GPL-1.0+ or Artistic-1.0
Group:          Development/Libraries/Perl
Source:         http://search.cpan.org/CPAN/authors/id/J/JN/JNW/File-Unpack-%{version}.tar.gz
Patch0:         fix-xml-test.diff
Patch1:         https://patch-diff.githubusercontent.com/raw/jnweiger/perl-File-Unpack/pull/5.diff
Patch2:         https://patch-diff.githubusercontent.com/raw/jnweiger/perl-File-Unpack/pull/6.diff
Url:            http://github.com/jnweiger/perl-File-Unpack
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

BuildRequires:  perl(Test::CheckManifest)
BuildRequires:  perl(Test::More)
BuildRequires:  perl(Test::Pod)
BuildRequires:  perl(Test::Pod::Coverage)

BuildRequires:  perl(Carp)
BuildRequires:  perl(Cwd)
BuildRequires:  perl(File::Compare)
BuildRequires:  perl(File::LibMagic)
BuildRequires:  perl(File::MimeInfo::Magic)
BuildRequires:  perl(File::Path)
BuildRequires:  perl(File::Temp)

# SLES11 does does not have this:
BuildRequires:  perl(Compress::Raw::Lzma)
# (provider perl-Compress-Raw-Zlib is obsoleted by installed perl)
BuildRequires:  perl(BSD::Resource)
BuildRequires:  perl(Compress::Raw::Bzip2)
BuildRequires:  perl(Compress::Raw::Zlib) >= 2.024
BuildRequires:  perl(Filesys::Statvfs)
BuildRequires:  perl(IPC::Run)
BuildRequires:  perl(JSON)
BuildRequires:  perl(String::ShellQuote)
BuildRequires:  perl(Text::Sprintf::Named)
# shared-mime-info is a dependency of perl-File-MimeInfo
# file is a dependency of perl-File-LibMagic
BuildRequires:  fdupes
BuildRequires:  file >= 5.03
BuildRequires:  shared-mime-info >= 0.60

Requires:       perl(Carp)
Requires:       perl(Cwd)
Requires:       perl(File::LibMagic)
Requires:       perl(File::MimeInfo::Magic)
Requires:       perl(File::Path)
Requires:       perl(File::Temp)

%if 0%{?suse_version} >= 1110
# SLES11 does does not have this:
Requires:       perl(Compress::Raw::Lzma)
%endif
Requires:       perl(Compress::Raw::Bzip2)
Requires:       perl(Compress::Raw::Zlib)
# 2.024 is provided by perl-5.12.1 in 11.3
Requires:       file >= 5.03
Requires:       shared-mime-info >= 0.60
Requires:       perl(BSD::Resource)
Requires:       perl(Compress::Raw::Zlib) >= 2.024
Requires:       perl(Filesys::Statvfs)
Requires:       perl(IPC::Run)
Requires:       perl(JSON)
Requires:       perl(Text::Sprintf::Named)
# App-cpanminus provides a bogus String::ShellQuote. We need to go by package name here.
# Requires:       perl(String::ShellQuote)
Requires:       perl-String-ShellQuote

## refer to Unpack.pm:@builtin_mime_handlers and to the helper subdirectory
## to see what we might need:
# grep '# Requires: ' Unpack.pm helper/*

%if 0%{?suse_version} > 1110
# 11.1 and SLES11 say: unresolvable: nothing provides xz
BuildRequires:  xz
Requires:       xz
%else
Recommends:     xz
%endif

%if 0%{?suse_version} > 1320
BuildRequires:  lzip
Requires:       lzip
%else
Recommends:     lzip
%endif

BuildRequires:  poppler-tools
Requires:       poppler-tools

## The following BuildRequires is for testing existance only.
## If you cannot provide a package, you may remove it from both BuildRequires 
## and Requires, and move it over to Recommends.
BuildRequires:  binutils
BuildRequires:  bzip2
BuildRequires:  cabextract
BuildRequires:  cpio
%if 0%{?suse_version} >= 1500
BuildRequires:  mkisofs
%else
BuildRequires:  genisoimage
%endif
BuildRequires:  gzip
BuildRequires:  p7zip
BuildRequires:  rpm
BuildRequires:  sharutils
BuildRequires:  tar
BuildRequires:  unzip
Requires:       binutils
Requires:       bzip2
Requires:       cabextract
Requires:       cpio
%if 0%{?suse_version} >= 1500
Requires:       mkisofs
%else
Requires:       genisoimage
%endif
Requires:       gzip
Requires:       p7zip
Requires:       rpm
Requires:       sharutils
Requires:       tar
Requires:       unzip
Recommends:     unrar poppler-tools xz upx antiword xar

%if 0%{?suse_version} < 1140
Requires:       perl = %{perl_version}
%else
%{perl_requires}
%endif
Requires:       file-unpack == %version

%description
File::Unpack is an unpacker for archives and files
(bz2/gz/zip/tar/cpio/iso/rpm/deb/cab/lzma/7z/rar/...).  We call
it strong, because it is not fooled by file suffixes, or multiply wrapped packages.
It reliably detects mime-types and recursivly descends into each archive found
until it finally exposes all unpackable payload contents. 
A precise logfile can be written, describing mimetypes and unpack actions.
Most of the known archive file formats are supported. Shell-script-style
plugins can be added to support additinal formats.

%package -n file-unpack
Summary:        Command line tool to unpack anything
Group:          Productivity/Archiving/Compression
Requires:       perl(File::Unpack) == %version

%description -n file-unpack
/usr/bin/file-unpack is a trivial command line frontend that
ships with the File::Unpack perl module.

%prep
%setup -q -n File-Unpack-%{version}
%patch0 -p1
%patch1 -p1
%patch2 -p1

%build
%{__perl} Makefile.PL INSTALLDIRS=vendor
%{__make} %{?_smp_mflags}

(cd contrib && %{__make} stringsx)

%install
%{__make} pure_install PERL_INSTALL_ROOT=%{buildroot}
mv $RPM_BUILD_ROOT/usr/bin/{file_unpack,file-unpack} || :
install -d       $RPM_BUILD_ROOT/usr/share/File-Unpack/helper/
install helper/* $RPM_BUILD_ROOT/usr/share/File-Unpack/helper/

%fdupes $RPM_BUILD_ROOT/usr/share/File-Unpack/

ln -s /usr/bin/file-unpack $RPM_BUILD_ROOT/usr/bin/file_unpack
ln -s /usr/bin/file-unpack $RPM_BUILD_ROOT/usr/bin/unpack-file
ln -s /usr/bin/file-unpack $RPM_BUILD_ROOT/usr/bin/unpack-file-deep
ln -s /usr/bin/file-unpack $RPM_BUILD_ROOT/usr/bin/unpack-deep
ln -s /usr/bin/file-unpack $RPM_BUILD_ROOT/usr/bin/file-unpack-deep

## CAUTION: a line beginning with . is a macro-expanded by nroff.
# echo .nf > file-unpack.1
# perl -Iblib/lib file-unpack.pl --help >> file-unpack.1 && true
# rm -rf file-unpack.1

cat <<EOF> file-unpack.pod
=pod

=head1 SYNOPSIS
EOF
perl file-unpack.pl --help >> file-unpack.pod && true
cat <<EOF1>> file-unpack.pod
=head1 REFERENCES

See also C<perldoc File::Unpack>
EOF1
pod2man file-unpack.pod > file-unpack.1
rm file-unpack.pod
echo file-unpack.1 >> MANIFEST

install -m0644 -D file-unpack.1 $RPM_BUILD_ROOT/%_mandir/man1/file-unpack.1
ln -s %_mandir/man1/file-unpack.1 $RPM_BUILD_ROOT/%_mandir/man1/unpack_file.1
install -m0755 -D contrib/stringsx $RPM_BUILD_ROOT/%_bindir/stringsx
rm contrib/stringsx # so that the Manifest in make check is not confused.

# FIXME: use ./Build install destdir=$RPM_BUILD_ROOT create_packlist=0
# maybe then we would not need to remove the .packlist files :-)
find %{buildroot} -type f -name .packlist -exec rm -f {} ';'

find %{buildroot} -depth -type d -exec rmdir {} 2>/dev/null ';'

%{_fixperms} %{buildroot}/*
%perl_process_packlist
%perl_gen_filelist

## seperate bin man from the main package 
mv %{name}.files /tmp/%{name}.files
sed -ie '/\/man\?/d' /tmp/%{name}.files
sed -ie '/\/bin\//d' /tmp/%{name}.files

%check
export RELEASE_TESTING=1
#%{__make} test

%files -f /tmp/%{name}.files
%defattr(-,root,root,-)
%doc README Changes
%dir /usr/share/File-Unpack
/usr/share/File-Unpack/*
%doc %_mandir/man3/*

%files -n file-unpack
%defattr(-,root,root)
/usr/bin/*
%doc %_mandir/man1/*

%changelog