File qca.spec of Package qca

#
# spec file for package qca
#
# Copyright (c) 2025 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#


%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%define pkgname_suffix %{nil}
ExclusiveArch:  do_not_build
%endif
%if "%{flavor}" == "qt5"
  %define qt5 1
  %define pkgname_suffix -qt5
  %define qt_min_version 5.14
  %define _plugindir %{_libqt5_plugindir}
%endif
# %%elif requires rpm 4.15...
%if "%{flavor}" == "qt6"
  %define qt6 1
  %define pkgname_suffix -qt6
  %define qt_min_version 6.0
  %define _plugindir %{_qt6_pluginsdir}
%endif
#
%define _soversion 2
%define realversion 2.3.10
%bcond_without pkcs11
Name:           qca%{pkgname_suffix}
Version:        2.3.10
Release:        0
Summary:        Qt Cryptographic Architecture 2
License:        LGPL-2.1-or-later
URL:            https://userbase.kde.org/QCA
# Using git for now
Source0:        qca-%{version}.tar.xz
#Source0:        https://download.kde.org/stable/qca/%%{version}/qca-%%{version}.tar.xz
#Source1:        https://download.kde.org/stable/qca/%%{version}/qca-%%{version}.tar.xz.sig
Source2:        qca.keyring
BuildRequires:  ca-certificates-mozilla
BuildRequires:  cmake
BuildRequires:  gpg2
BuildRequires:  libgcrypt-devel
BuildRequires:  libjpeg-devel
%if %{with pkcs11}
BuildRequires:  pkcs11-helper-devel
%endif
BuildRequires:  pkgconfig
BuildRequires:  update-desktop-files
%if 0%{?qt5}
BuildRequires:  cmake(Qt5Core) >= %{qt_min_version}
BuildRequires:  cmake(Qt5Network) >= %{qt_min_version}
BuildRequires:  cmake(Qt5Test) >= %{qt_min_version}
%endif
%if 0%{?qt6}
BuildRequires:  cmake(Qt6Core) >= %{qt_min_version}
BuildRequires:  cmake(Qt6Core5Compat) >= %{qt_min_version}
BuildRequires:  cmake(Qt6Network) >= %{qt_min_version}
BuildRequires:  cmake(Qt6Test) >= %{qt_min_version}
%endif
BuildRequires:  pkgconfig(libdrm)
BuildRequires:  pkgconfig(libsasl2)
BuildRequires:  pkgconfig(nss)
BuildRequires:  pkgconfig(openssl) >= 1.1.1
Requires:       gpg2 >= 2.0.0
%if 0%{?qt5}
# The plugins used to be in the same package as the library
Obsoletes:      libqca-qt5 <= 2.3.2
%endif

%description
This package provides a generic Qt cryptographic architecture,
including a library and a plug-in for using all supported capabilities
of openssl, like SSL/TLS, X509, RSA, SHA1, MD5, Blowfish, 3DES, and
AES.

It can be extended by further plug-ins, for example, with qca-sasl for
SASL support.

%package -n libqca-%{flavor}-%{_soversion}
Summary:        QCA library
%if 0%{?qt5}
Provides:       libqca-qt5 = %{version}
Obsoletes:      libqca-qt5 < %{version}
%endif
Requires:       %{name} >= %{version}
Recommends:     %{name}-plugins

%description -n libqca-%{flavor}-%{_soversion}
The Qt cryptographic library.

%package devel
Summary:        Development files for the Qt Cryptographic Architecture 2
Requires:       libqca-%{flavor}-%{_soversion} = %{version}
%if 0%{?qt5}
Requires:       cmake(Qt5Core) >= %{qt_min_version}
Requires:       cmake(Qt5Network) >= %{qt_min_version}
Provides:       libqca-qt5-devel = %{version}
Obsoletes:      libqca-qt5-devel < %{version}
%endif
%if 0%{?qt6}
Requires:       cmake(Qt6Core) >= %{qt_min_version}
Requires:       cmake(Qt6Network) >= %{qt_min_version}
%endif

%description devel
This package provides a generic Qt cryptographic architecture,
including a library and a plugin for using all supported capabilities
of openssl, like SSL/TLS, X509, RSA, SHA1, MD5, Blowfish, 3DES and AES.

%package plugins
Summary:        Various plugins for the Qt Cryptographic Architecture 2
%if 0%{?qt5}
Provides:       libqca-qt5-plugins = %{version}
Obsoletes:      libqca-qt5-plugins < %{version}
%endif

%description plugins
This package provides a generic Qt cryptographic architecture,
including a library and a plug-in for using all supported capabilities
of openssl, like SSL/TLS, X509, RSA, SHA1, MD5, Blowfish, 3DES, and
AES.

It can be extended by further plug-ins, for example, with qca-sasl for
SASL support.

%prep
%autosetup -p1 -n qca-%{version}
# Don't build examples
echo > examples/CMakeLists.txt

# The pgp test fails randomly
sed -i '/pgpunittest/d' unittest/CMakeLists.txt

%build
%if 0%{?qt5}
%cmake \
%else
%cmake_qt6 \
  -DBUILD_WITH_QT6=ON \
%endif
  -DBUILD_TESTS=ON \
  -DQCA_INSTALL_IN_QT_PREFIX=ON \
  -DQCA_BINARY_INSTALL_DIR:PATH="%{_bindir}" \
  -DQCA_MAN_INSTALL_DIR:PATH="%{_mandir}" \
  -DWITH_botan_PLUGIN=OFF

%if 0%{?qt5}
%cmake_build
%else
%qt6_build
%endif

%install
%if 0%{?qt5}
%cmake_install
%else
%qt6_install
%endif

%check
export LD_LIBRARY_PATH=%{buildroot}%{_libdir}:$LD_LIBRARY_PATH
%if 0%{?qt5}
export QT_PLUGIN_PATH=%{buildroot}%{_libqt5_plugindir}:%{_libqt5_plugindir}
%else
export QT_PLUGIN_PATH=%{buildroot}%{_qt6_pluginsdir}:%{_qt6_pluginsdir}
%endif
# The 'PGP' test fails randomly
%define _smp_mflags -j1
%ctest

%ldconfig_scriptlets -n libqca-%{flavor}-%{_soversion}

%files
%dir %{_plugindir}/crypto
%{_plugindir}/crypto/libqca-gcrypt.so
%{_plugindir}/crypto/libqca-gnupg.so
%{_plugindir}/crypto/libqca-logger.so
%{_plugindir}/crypto/libqca-ossl.so
%{_plugindir}/crypto/libqca-softstore.so

%files -n libqca-%{flavor}-%{_soversion}
%license COPYING
%doc README
%{_libdir}/libqca-%{flavor}.so.%{_soversion}
%{_libdir}/libqca-%{flavor}.so.%{realversion}

%files devel
%{_bindir}/mozcerts-%{flavor}
%{_bindir}/qcatool-%{flavor}
%{_includedir}/%{flavor}/Qca-%{flavor}/
%if 0%{?qt5}
%{_libdir}/%{flavor}/mkspecs/features/crypto.prf
%endif
%{_libdir}/cmake/Qca-%{flavor}/
%{_libdir}/libqca-%{flavor}.so
%if 0%{?qt5}
%{_libdir}/pkgconfig/qca2-%{flavor}.pc
%endif
%{_mandir}/man1/qcatool-%{flavor}.1%{?ext_man}

%files plugins
%{_plugindir}/crypto/libqca-cyrus-sasl.so
%{_plugindir}/crypto/libqca-nss.so
%if %{with pkcs11}
%{_plugindir}/crypto/libqca-pkcs11.so
%endif

%changelog
openSUSE Build Service is sponsored by