Blob Blame History Raw
%if 0%{?rhel}
# EPEL - only Qt5 packages
%bcond_with	qt4
%bcond_without	qt5
%bcond_with	qt6
%else
# Fedora - build everything
%bcond_without	qt4
%bcond_without	qt5
%bcond_without	qt6
%endif

%bcond_without test

# see top-ldevel CMakeLists.txt for variables of same name
%global QUAZIP_LIB_VERSION %{version} 
%global QUAZIP_LIB_SOVERSION 1.4.0

Name:		quazip
Version:	1.4
Release:	%autorelease
Summary:	Qt/C++ wrapper for the minizip library
License:	GPLv2+ or LGPLv2+
URL:		https://github.com/stachenov/quazip
Source0:	%{url}/archive/v%{version}/%{name}-v%{version}.tar.gz
# pre-1.0 compat CMake module
Source1:	FindQuaZip.cmake
BuildRequires:	bzip2-devel
BuildRequires:	cmake
BuildRequires:	gcc-c++
BuildRequires:	zlib-devel
%if %{with qt4}
BuildRequires:	qt4-devel
%endif
%if %{with qt5}
BuildRequires:	qt5-qtbase-devel
%endif
%if %{with qt6}
BuildRequires:	qt6-qtbase-devel
BuildRequires:	qt6-qt5compat-devel
%endif
BuildRequires:	doxygen graphviz


%description
QuaZIP is a simple C++ wrapper over Gilles Vollant's ZIP/UNZIP package that
can be used to access ZIP archives. It uses Trolltech's Qt toolkit.

QuaZIP allows you to access files inside ZIP archives using QIODevice API,
and - yes! - that means that you can also use QTextStream, QDataStream or
whatever you would like to use on your zipped files.

QuaZIP provides complete abstraction of the ZIP/UNZIP API, for both reading
from and writing to ZIP archives.


%if %{with qt4}
%package devel
Summary:	Development files for %{name}
Requires:	%{name}%{?_isa} = %{version}-%{release}
Requires:	bzip2-devel%{?_isa}
Requires:	qt4-devel%{?_isa}
Requires:	zlib-devel%{?_isa}

%description devel
The %{name}-devel package contains libraries, header files and documentation
for developing applications that use %{name}. 
%endif

%if %{with qt5}
%package qt5
Summary: Qt5 wrapper for the minizip library
%description qt5
QuaZIP is a simple C++ wrapper over Gilles Vollant's ZIP/UNZIP package that
can be used to access ZIP archives. It uses Trolltech's Qt toolkit.

QuaZIP allows you to access files inside ZIP archives using QIODevice API,
and - yes! - that means that you can also use QTextStream, QDataStream or
whatever you would like to use on your zipped files.

QuaZIP provides complete abstraction of the ZIP/UNZIP API, for both reading
from and writing to ZIP archives.

%package qt5-devel
Summary:	Development files for %{name}-qt5
Requires:	%{name}-qt5%{?_isa} = %{version}-%{release}
Requires:	bzip2-devel%{?_isa}
Requires:	qt5-qtbase-devel%{?_isa}
Requires:	zlib-devel%{?_isa}

%description qt5-devel
The %{name}-qt5-devel package contains libraries, header files and documentation
for developing applications that use %{name}-qt5.
%endif

%if %{with qt6}
%package qt6
Summary: Qt6 wrapper for the minizip library
%description qt6
QuaZIP is a simple C++ wrapper over Gilles Vollant's ZIP/UNZIP package that
can be used to access ZIP archives. It uses Trolltech's Qt toolkit.

QuaZIP allows you to access files inside ZIP archives using QIODevice API,
and - yes! - that means that you can also use QTextStream, QDataStream or
whatever you would like to use on your zipped files.

QuaZIP provides complete abstraction of the ZIP/UNZIP API, for both reading
from and writing to ZIP archives.

%package qt6-devel
Summary:	Development files for %{name}-qt6
Requires:	%{name}-qt6%{?_isa} = %{version}-%{release}
Requires:	bzip2-devel%{?_isa}
Requires:	qt6-qtbase-devel%{?_isa}
Requires:	qt6-qt5compat-devel%{?_isa}
Requires:	zlib-devel%{?_isa}

%description qt6-devel
The %{name}-qt6-devel package contains libraries, header files and documentation
for developing applications that use %{name}-qt6.
%endif


%prep
%autosetup -p1

%build
%if %{with qt4}
%global _vpath_builddir build-qt4
%cmake -DQUAZIP_QT_MAJOR_VERSION=4 -DQUAZIP_ENABLE_TESTS=ON
%cmake_build
%endif

%if %{with qt5}
%global _vpath_builddir build-qt5
%cmake -DQUAZIP_QT_MAJOR_VERSION=5 -DQUAZIP_ENABLE_TESTS=ON
%cmake_build
%endif

%if %{with qt6}
%global _vpath_builddir build-qt6
%cmake -DQUAZIP_QT_MAJOR_VERSION=6 -DQUAZIP_ENABLE_TESTS=ON
%cmake_build
%endif

doxygen Doxyfile
for file in doc/html/*; do
	touch -r Doxyfile $file
done

%install
%if %{with qt4}
%global _vpath_builddir build-qt4
%cmake_install
%endif

%if %{with qt5}
%global _vpath_builddir build-qt5
%cmake_install
%endif

%if %{with qt6}
%global _vpath_builddir build-qt6
%cmake_install
%endif

# Create compat symlinks/files so that packages that use the old (pre-1.0)
# library location, include paths, or CMake module still build against the
# devel package. Note that the resulting binaries will refer to the new
# library name, though.
#
# These symlinks should probably be removed once all dependent packages are
# switched to use the new pkgconfig or CMake modules.
%if %{with qt4}
ln -s libquazip1-qt4.so %{buildroot}%{_libdir}/libquazip.so

install -d %{buildroot}%{_includedir}/quazip
pushd %{buildroot}%{_includedir}/QuaZip-Qt4-%{version}/quazip
for f in *; do
	ln -s ../QuaZip-Qt4-%{version}/quazip/$f %{buildroot}%{_includedir}/quazip/$f
done
popd

install -d %{buildroot}%{_datadir}/cmake/Modules
install -pm 0644 %{SOURCE1} %{buildroot}%{_datadir}/cmake/Modules/FindQuaZip.cmake
%endif

%if %{with qt5}
ln -s libquazip1-qt5.so %{buildroot}%{_libdir}/libquazip5.so

install -d %{buildroot}%{_includedir}/quazip5
pushd %{buildroot}%{_includedir}/QuaZip-Qt5-%{version}/quazip
for f in *; do
	ln -s ../QuaZip-Qt5-%{version}/quazip/$f %{buildroot}%{_includedir}/quazip5/$f
done
popd

install -d %{buildroot}%{_datadir}/cmake/Modules
install -pm 0644 %{SOURCE1} %{buildroot}%{_datadir}/cmake/Modules/FindQuaZip5.cmake
%endif


%if %{with test}
%check
# Qt4 uses the locale rather than libicu to determine file name encoding.
# Thus we need to force a UTF-8 locale, otherwise the tests will fail
# under Qt4.
# https://github.com/stachenov/quazip/issues/127
export LC_ALL=C.UTF-8
# In some emulated environments (such as the s390x mock chroot emulated
# on x86_64) the regexp JIT is broken, so turn it off to avoid incorrect
# test failures.
export QT_ENABLE_REGEXP_JIT=0

%if %{with qt4}
%global _vpath_builddir build-qt4
%ctest
%endif

%if %{with qt5}
%global _vpath_builddir build-qt5
%ctest
%endif

%if %{with qt6}
%global _vpath_builddir build-qt6
%ctest
%endif
%endif


%if %{with qt4}
%files
%doc NEWS.txt README.md
%license COPYING
%{_libdir}/libquazip1-qt4.so.%{QUAZIP_LIB_VERSION}
%{_libdir}/libquazip1-qt4.so.%{QUAZIP_LIB_SOVERSION}

%files devel
%doc doc/html
%{_includedir}/QuaZip-Qt4-%{version}/
%{_libdir}/libquazip1-qt4.so
%{_libdir}/cmake/QuaZip-Qt4-%{version}/
%{_libdir}/pkgconfig/quazip1-qt4.pc
# pre-1.0 compat files
%{_includedir}/quazip/
%{_libdir}/libquazip.so
%{_datadir}/cmake/Modules/FindQuaZip.cmake
%endif

%if %{with qt5}
%files qt5
%doc NEWS.txt README.md
%license COPYING
%{_libdir}/libquazip1-qt5.so.%{QUAZIP_LIB_VERSION}
%{_libdir}/libquazip1-qt5.so.%{QUAZIP_LIB_SOVERSION}

%files qt5-devel
%doc doc/html
%{_includedir}/QuaZip-Qt5-%{version}/
%{_libdir}/libquazip1-qt5.so
%{_libdir}/cmake/QuaZip-Qt5-%{version}/
%{_libdir}/pkgconfig/quazip1-qt5.pc
# pre-1.0 compat files
%{_includedir}/quazip5/
%{_libdir}/libquazip5.so
%{_datadir}/cmake/Modules/FindQuaZip5.cmake
%endif

%if %{with qt6}
%files qt6
%doc NEWS.txt README.md
%license COPYING
%{_libdir}/libquazip1-qt6.so.%{QUAZIP_LIB_VERSION}
%{_libdir}/libquazip1-qt6.so.%{QUAZIP_LIB_SOVERSION}

%files qt6-devel
%doc doc/html
%{_includedir}/QuaZip-Qt6-%{version}/
%{_libdir}/libquazip1-qt6.so
%{_libdir}/cmake/QuaZip-Qt6-%{version}/
%{_libdir}/pkgconfig/quazip1-qt6.pc
%endif


%changelog
%autochangelog