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

#%bcond_with rcc
%define with_rcc 1

# NOTE: unzip.spec is the major file, if you want to update unzip-rcc.spec
# call 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
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
%define update_weight 10
%define _suffix plain
BuildRoot:      %{_tmppath}/%{name}-%{version}-build
BuildRequires:  update-alternatives
Requires:       update-alternatives
Recommends:     %{_name}-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.

%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.

%setup -q -n %{_name}%{fileversion}
%if %{with_rcc}

export RPM_OPT_FLAGS="%{optflags} \
-DDATE_FORMAT=DF_YMD -I. -fstack-protector -fno-strict-aliasing"

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

make -f unix/Makefile check

mkdir -p %{buildroot}%{_sysconfdir}/alternatives
mkdir -p %{buildroot}{%{_bindir},%{_mandir}/man1}
for i in unzip funzip unzipsfx;	do
	install $i "%{buildroot}%{_bindir}/$i-"%{_suffix}
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

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

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

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

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

%ghost %_sysconfdir/alternatives/unzip
%ghost %_sysconfdir/alternatives/funzip
%ghost %_sysconfdir/alternatives/unzipsfx
%ghost %_sysconfdir/alternatives/zipgrep

%if %{without rcc}
%files doc
%doc %{_mandir}/man1/*
%doc BUGS Contents History.* LICENSE README ToDo WHERE
%doc *.txt proginfo


* Fri Aug  2 2013
- fix defaultattr for old distros
* Fri Aug  2 2013
- 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
- Cleanup spec file
- Add Source URL, see
* Fri Aug  5 2011
- Don't call isprint (bnc#620483).
* Mon May 23 2011
- remove use of __DATE__ from correct file
* Sat May  7 2011
- 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
- use dlopen for librcc0. A direct requires causes lots of other
  packages to get installed such as aspell which bloats a minimal
* Mon Aug 30 2010
- Do not include build host specific info like build dates In
* Fri Jun 25 2010
- 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
- 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
  * 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
- Use librcc to convert russian/slavic file names (bnc#540598).
* Sun Dec  6 2009
- enable parallel building
* Tue Dec  9 2008
- Fix last change.
* Mon Sep 15 2008
- use hardlink instead of softlink
* Mon Feb  4 2008
- Add patch to fix erroneous freeing of buffers (bnc#358425)
* Fri Dec  7 2007
- Pass file mode when calling open with O_CREAT.
* Mon Dec  3 2007
- 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
- fix changelog entry order
* Thu May  3 2007
- 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
- converted neededforbuild to BuildRequires
* Thu Jan 26 2006
- Reject file names that are too long (bnc#140304)
- Use stack protector.
* Fri Jan 20 2006
- Don't strip binaries.
* Thu Dec 15 2005
- 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
- update to version 5.52 (bnc#67279)
* Sat Aug  7 2004
- update to version 5.51
  (fixes old security bugs, adds PKWARE's compression code Deflate64)
* Wed May 19 2004
- added -fno-strict-aliasing
- really use RPM_OPT_FLAGS
* Sun Jan 11 2004
- build as user
* Tue Sep 23 2003
- replaced fix for ../ exploit with a fix both for
  the ../ exploit and '/' exploit (Bugzilla #29311)
* Thu Jul  3 2003
- added fix for ../ exploit (Bugzilla #27667)
* Fri Jan 17 2003
- fixed Summary: to be more verbose about what this package does
* Tue Sep 17 2002
- removed bogus self-provides
* Fri Jul  5 2002
- Use %%ix86 macro
* Mon Mar 11 2002
- Update to 5.50
- took over parts of pmladek's patch (see below)
* Thu Jan 24 2002
- added unzip-5.42-iso8859_2.patch to fix coding conversion
  between Microsoft and Linux file names
  (originally from,
  enhanced to support both ISO8859-1 and ISO8859-2 by Petr Mladek
* Mon Apr  9 2001
- Update to 5.42
- file list fixes (new license file, documentation renames)
* Wed Dec 13 2000
- Update to 5.41 (now includes decryption support)
- now Provides and Obsoletes crunzip
- bzipped sources
- use BuildRoot
* Tue Feb 29 2000
- Add support for ia64.
- /usr/man -> /usr/share/man
* Wed Dec 22 1999
- Added "Conflicts: crzip" to spec file
- cleaned up Provides: tag
* Fri Dec 17 1999
- Spec file cleanups
* Sat Nov 27 1999
- Use linux_noasm Makefile target on SPARC
* Mon Sep 13 1999
- ran old prepare_spec on spec file to switch to new prepare_spec.
* Wed Sep  8 1999
- uses target linux_noasm for PPC
* Wed Feb 24 1999
- new version (5.40)
- specfile modifications
- added french description
* Mon Jan 11 1999
- use target linux_noasm for alpha
* Fri Jan 23 1998
- version 5.32
* Thu Feb  6 1997
- version 5.12
- new test/changes/plist files