File unzip.spec of Package unzip

#
# spec file for package unzip
#
# Copyright (c) 2013 SUSE LINUX Products 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/
#


#%bcond_with rcc
%define with_rcc 1

# NOTE: unzip.spec is the major file, if you want to update unzip-rcc.spec
# call pre_checkin.sh after editing unzip.spec

Name:           unzip
%define _name unzip
Version:        6.00
Release:        1.1
%define fileversion 60
Summary:        A program to unpack compressed files
License:        BSD-3-Clause
Group:          Productivity/Archiving/Compression
Url:            http://www.info-zip.org/
Source:         http://sourceforge.net/projects/infozip/files/UnZip%206.x%20%28latest%29/UnZip%206.0/%{_name}%{fileversion}.tar.gz
Source1:        pre_checkin.sh
Patch0:         unzip.dif
Patch1:         unzip-iso8859_2.patch
Patch3:         unzip-optflags.patch
Patch4:         unzip-5.52-filename_too_long.patch
Patch5:         unzip-no_file_name_translation.patch
Patch8:         unzip-open_missing_mode.patch
Patch10:        unzip-5.52-use_librcc.patch
Patch11:        unzip-no-build-date.patch
Patch12:        unzip-dont_call_isprint.patch
%if %{with_rcc}
BuildRequires:  librcc-devel
Suggests:       librcc0
Provides:       %{_name} = %{version}
%define update_weight 20
%define _suffix rcc
%else
%define update_weight 10
%define _suffix plain
%endif
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  update-alternatives
Requires:       update-alternatives
Recommends:     %{_name}-doc

%description
UnZip is an extraction utility for archives compressed in .zip format
(known as "zip files").  Although highly compatible both with PKWARE's
PKZIP(tm) and PKUNZIP utilities for MS-DOS and with Info-ZIP's own Zip
program, our primary objectives have been portability and non-MS-DOS
functionality. This version can also extract encrypted archives.

%package doc
Summary:        Documentation files for unzip
Group:          Productivity/Archiving/Compression

%description doc
UnZip is an extraction utility for archives compressed in .zip format
(known as "zip files").  Although highly compatible both with PKWARE's
PKZIP(tm) and PKUNZIP utilities for MS-DOS and with Info-ZIP's own Zip
program, our primary objectives have been portability and non-MS-DOS
functionality. This version can also extract encrypted archives.

%prep
%setup -q -n %{_name}%{fileversion}
%patch0
%patch1
%patch3
%patch4
%patch5
%patch8
%if %{with_rcc}
%patch10
%endif
%patch11
%patch12

%build
export RPM_OPT_FLAGS="%{optflags} \
-D_GNU_SOURCE -DRCC_LAZY -DWILD_STOP_AT_DIR \
-DLARGE_FILE_SUPPORT -DUNICODE_SUPPORT \
-DUNICODE_WCHAR -DUTF8_MAYBE_NATIVE -DNO_LCHMOD \
-DDATE_FORMAT=DF_YMD -I. -fstack-protector -fno-strict-aliasing"

make %{?_smp_mflags}  -f unix/Makefile LF2="-ldl" linux_noasm

%check
make -f unix/Makefile check

%install
mkdir -p %{buildroot}%{_sysconfdir}/alternatives
mkdir -p %{buildroot}{%{_bindir},%{_mandir}/man1}
for i in unzip funzip unzipsfx;	do
	install $i "%{buildroot}%{_bindir}/$i-"%{_suffix}
done
ln -s unzip %{buildroot}%{_bindir}/zipinfo
install unix/zipgrep "%{buildroot}%{_bindir}/zipgrep-"%{_suffix}
for i in unzip funzip unzipsfx zipgrep; do
  touch %{buildroot}%{_sysconfdir}/alternatives/$i
  ln -s %{_sysconfdir}/alternatives/$i %{buildroot}%_bindir/$i
done

# do not have the docu in both packages
%if %{with_rcc}

%else
 for i in man/*.1; do
  install -m 644 $i %{buildroot}%{_mandir}/man1/
 done
%endif

%post
for bin in unzip funzip unzipsfx zipgrep; do
  /usr/sbin/update-alternatives --install %{_bindir}/$bin $bin "%{_bindir}/$bin-"%{_suffix} %{update_weight}
done

%preun
if [ "$1" = 0 ] ; then
  for bin in unzip funzip unzipsfx zipgrep; do
    /usr/sbin/update-alternatives --remove $bin "%{_bindir}/$bin"-%{_suffix}
  done
fi

%files
%defattr(-,root,root)
%ghost %_sysconfdir/alternatives/unzip
%{_bindir}/unzip
%{_bindir}/unzip-%{_suffix}
%ghost %_sysconfdir/alternatives/funzip
%{_bindir}/funzip
%{_bindir}/funzip-%{_suffix}
%ghost %_sysconfdir/alternatives/unzipsfx
%{_bindir}/unzipsfx
%{_bindir}/unzipsfx-%{_suffix}
%{_bindir}/zipinfo
%ghost %_sysconfdir/alternatives/zipgrep
%{_bindir}/zipgrep
%{_bindir}/zipgrep-%{_suffix}

%if %{without rcc}
%files doc
%defattr(-,root,root)
%doc %{_mandir}/man1/*
%doc BUGS Contents History.* LICENSE README ToDo WHERE
%doc *.txt proginfo

%endif

%changelog
* Fri Aug  2 2013 coolo@suse.com
- fix defaultattr for old distros
* Fri Aug  2 2013 coolo@suse.com
- split the rcc dependency into a spec file of it's own, we don't
  need that complexity during build causing cycles like this:
    unzip -> librcc -> libproxy -> libXau -> xorg-x11-proto-devel -> docbook-xsl-stylesheets
* Fri Apr  5 2013 idonmez@suse.com
- Cleanup spec file
- Add Source URL, see https://en.opensuse.org/SourceUrls
* Fri Aug  5 2011 pth@suse.de
- Don't call isprint (bnc#620483).
* Mon May 23 2011 lnussel@suse.de
- remove use of __DATE__ from correct file
* Sat May  7 2011 idoenmez@novell.com
- Sync our compile time flags with Debian except Acorn stuff, this enables
  UTF-8, saves an unrelated warning about lchmod being not implemented.
- Enable make check
* Fri Jan 28 2011 lnussel@suse.de
- use dlopen for librcc0. A direct requires causes lots of other
  packages to get installed such as aspell which bloats a minimal
  install.
* Mon Aug 30 2010 cristian.rodriguez@opensuse.org
- Do not include build host specific info like build dates In
  binaries.
* Fri Jun 25 2010 pth@suse.de
- Doing open(O_WRONLY) and then fdopen("w+") will now fail with
  "Invalid Argument" whereas former glibcs would succeed. So now
  do open(O_RDWR).
- Print error message when open(2) fails.
- Add debugging traces in open_outfile.
* Fri May 21 2010 pth@suse.de
- Update to 6.0:
  * Support PKWARE ZIP64 extensions, allowing Zip archives and Zip archive
    entries larger than 4 GiBytes and more than 65536 entries within a
    single Zip archive.  This support is currently only available for Unix,
    OpenVMS and Win32/Win64.
  * Support for bzip2 compression method.
  * Support for UTF-8 encoded entry names, both through PKWARE's "General
    Purpose Flags Bit 11" indicator and Info-ZIP's new "up" unicode path
    extra field.  (Currently, on Windows the UTF-8 handling is limited to
    the character subset contained in the configured non-unicode "system
    code page".)
  * Fixed "Time of Creation/Time of Use" vulnerability when setting
    attributes of extracted files, for Unix and Unix-like ports.
  * Fixed memory leak when processing invalid deflated data.
  * Fixed long-standing bug in unshrink (partial_clear), added boundary
    checks against invalid compressed data.
  * On Unix, keep inherited SGID attribute bit for extracted directories
    unless restoration of owner/group id or SUID/SGID/Tacky attributes was
    requested.
  * On Unix, allow extracted filenames to contain embedded control
    characters when explicitly requested by specifying the new command line
    option "-^".
  * On Unix, support restoration of symbolic link attributes.
  * On Unix, support restoration of 32-bit UID/GID data using the new "ux"
    IZUNIX3 extra field introduced with Zip 3.0.
  * Support symbolic links zipped up on VMS.
  * New -D option to suppress restoration of timestamps for extracted
    directory entries (on those ports that support setting of directory
    timestamps).  By specifying "-DD", this new option also allows to
    suppress timestamp restoration for ALL extracted files on all UnZip
    ports which support restoration of timestamps.  On VMS, the default
    behaviour is now to skip restoration of directory timestamps; here,
    "--D" restores ALL timestamps, "-D" restores none.
  * On OS/2, Win32, and Unix, the (previously optional) feature UNIXBACKUP
    to allow saving backup copies of overwritten files on extraction is now
    enabled by default.
* Mon May 10 2010 pth@suse.de
- Use librcc to convert russian/slavic file names (bnc#540598).
* Sun Dec  6 2009 jengelh@.medozas.de
- enable parallel building
* Tue Dec  9 2008 schwab@suse.de
- Fix last change.
* Mon Sep 15 2008 ro@suse.de
- use hardlink instead of softlink
* Mon Feb  4 2008 pth@suse.de
- Add patch to fix erroneous freeing of buffers (bnc#358425)
* Fri Dec  7 2007 pth@suse.de
- Pass file mode when calling open with O_CREAT.
* Mon Dec  3 2007 pth@suse.de
- Add patch to extend the maximum file/archive size to 2^32-8193
  (4294959103) bytes.
- Add patch to fix CVE-2005-2475 (bnc#274156)
* Thu Jun 21 2007 adrian@suse.de
- fix changelog entry order
* Thu May  3 2007 pth@suse.de
- Add patch from Takashi Iwai that adds a new option (-S) to
  unzip and infozip that disables file name translation (bnc#267901).
- Recompress tarball with bzip2
* Fri Jan 27 2006 mls@suse.de
- converted neededforbuild to BuildRequires
* Thu Jan 26 2006 pth@suse.de
- Reject file names that are too long (bnc#140304)
- Use stack protector.
* Fri Jan 20 2006 schwab@suse.de
- Don't strip binaries.
* Thu Dec 15 2005 pth@suse.de
- Compile with (limited) large file support. This will support
  single files exceeding 2 GB as long as the archive stays below
  that theshold.
* Mon Jun 13 2005 rommel@suse.de
- update to version 5.52 (bnc#67279)
* Sat Aug  7 2004 rommel@suse.de
- update to version 5.51
  (fixes old security bugs, adds PKWARE's compression code Deflate64)
* Wed May 19 2004 ro@suse.de
- added -fno-strict-aliasing
- really use RPM_OPT_FLAGS
* Sun Jan 11 2004 adrian@suse.de
- build as user
* Tue Sep 23 2003 rommel@suse.de
- replaced fix for ../ exploit with a fix both for
  the ../ exploit and '/' exploit (Bugzilla #29311)
* Thu Jul  3 2003 rommel@suse.de
- added fix for ../ exploit (Bugzilla #27667)
* Fri Jan 17 2003 rommel@suse.de
- fixed Summary: to be more verbose about what this package does
* Tue Sep 17 2002 ro@suse.de
- removed bogus self-provides
* Fri Jul  5 2002 kukuk@suse.de
- Use %%ix86 macro
* Mon Mar 11 2002 rommel@suse.de
- Update to 5.50
- took over parts of pmladek's patch (see below)
* Thu Jan 24 2002 grimmer@suse.de
- added unzip-5.42-iso8859_2.patch to fix coding conversion
  between Microsoft and Linux file names
  (originally from http://www.axis.cz/linux/zip_unzip.php3,
  enhanced to support both ISO8859-1 and ISO8859-2 by Petr Mladek
  <pmladek@suse.cz>)
* Mon Apr  9 2001 grimmer@suse.de
- Update to 5.42
- file list fixes (new license file, documentation renames)
* Wed Dec 13 2000 grimmer@suse.de
- Update to 5.41 (now includes decryption support)
- now Provides and Obsoletes crunzip
- bzipped sources
- use BuildRoot
* Tue Feb 29 2000 schwab@suse.de
- Add support for ia64.
- /usr/man -> /usr/share/man
* Wed Dec 22 1999 grimmer@suse.de
- Added "Conflicts: crzip" to spec file
- cleaned up Provides: tag
* Fri Dec 17 1999 grimmer@suse.de
- Spec file cleanups
* Sat Nov 27 1999 kukuk@suse.de
- Use linux_noasm Makefile target on SPARC
* Mon Sep 13 1999 bs@suse.de
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Wed Sep  8 1999 uli@suse.de
- uses target linux_noasm for PPC
* Wed Feb 24 1999 grimmer@suse.de
- new version (5.40)
- specfile modifications
- added french description
* Mon Jan 11 1999 ro@suse.de
- use target linux_noasm for alpha
* Fri Jan 23 1998 rj@suse.de
- version 5.32
* Thu Feb  6 1997 rj@suse.de
- version 5.12
- new test/changes/plist files