gpgme/gpgme.spec
Pedro Monreal Gonzalez 86c34da11f Accepting request 1227272 from home:dimstar:Factory
- Add gpgme-fix-python-install.patch: Fix the installation of the
  python bindings without having to move them around manually.

This should be the correct fix instead of
 Move the gpg python bindings out of the egg directory.

Patch should be upstreamable (and thus be fixed for everybody)

OBS-URL: https://build.opensuse.org/request/show/1227272
OBS-URL: https://build.opensuse.org/package/show/Base:System/gpgme?expand=0&rev=178
2024-11-29 16:39:45 +00:00

410 lines
12 KiB
RPMSpec

#
# spec file for package gpgme
#
# Copyright (c) 2024 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/
#
%define psuffix %{nil}
%global flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == ""
%define psuffix %{nil}
%bcond_without python3
%bcond_with qt
%endif
%if "%{flavor}" == "qt"
%define psuffix qt
%bcond_with python3
%bcond_without qt
%endif
%if "%{flavor}" == "qt6"
%define psuffix qt6
%bcond_with python3
%bcond_without qt6
%endif
%if 0%{suse_version} >= 1550 || "%{?pythons}" == "python311"
%bcond_without replace_distutils
%else
# Keep deprecated distutils for Python 3.6 on 15.x
%bcond_with replace_distutils
%endif
Name: gpgme%{psuffix}
Version: 1.24.0
Release: 0
Summary: Programmatic library interface to GnuPG
License: GPL-3.0-or-later AND LGPL-2.1-or-later
Group: Productivity/Security
URL: https://www.gnupg.org/related_software/gpgme/
Source: https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-%{version}.tar.bz2
Source1: https://www.gnupg.org/ftp/gcrypt/gpgme/gpgme-%{version}.tar.bz2.sig
Source2: baselibs.conf
# https://www.gnupg.org/signature_key.html
Source3: https://gnupg.org/signature_key.asc#/gpgme.keyring
# used to have a fixed timestamp
Source99: gpgme.changes
# PATCH-FIX-OPENSUSE gpgme-suse-nobetasuffix.patch code@bnavigator.de -- remove "-unknown" betasuffix boo#1205197
Patch2: gpgme-suse-nobetasuffix.patch
Patch3: python313.patch
Patch4: gpgme-fix-python-install.patch
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: gcc-c++
BuildRequires: gpg2 >= 2.4.1
BuildRequires: libassuan-devel >= 2.4.2
BuildRequires: libgpg-error-devel >= 1.47
BuildRequires: pkgconfig
BuildRequires: swig
%if %{with python3}
BuildRequires: %{python_module devel}
BuildRequires: python-rpm-macros
%if %{with replace_distutils}
BuildRequires: %{python_module pip}
BuildRequires: %{python_module setuptools >= 62.4}
BuildRequires: %{python_module wheel}
%endif
%endif
%if %{with qt}
BuildRequires: pkgconfig(Qt5Core)
BuildRequires: pkgconfig(Qt5Test)
%endif
%if %{with qt6}
%if 0%{?suse_version} < 1550
# The default compiler is too old for Qt6, use the newest
# version available in the :Update repo
BuildRequires: gcc12-c++
BuildRequires: gcc12-PIE
%endif
BuildRequires: pkgconfig(Qt6Core) >= 6.4.0
BuildRequires: pkgconfig(Qt6Test)
%endif
%if 0%{?suse_version} >= 1550
# TW: generate subpackages for every python3 flavor
%define python_subpackage_only 1
%python_subpackages
%else
%define python_sitearch %python3_sitearch
%define python_version %python3_version
%define python_files() -n python3-%{**}
%endif
%description
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management. It uses GnuPG as its back-end.
%package -n libgpgme11
Summary: Programmatic library interface to GnuPG
Group: System/Libraries
Requires: gpg2
%description -n libgpgme11
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management. It uses GnuPG as its back-end.
%package -n libgpgme-devel
Summary: Development files for GPGME, a C library for accessing GnuPG
Group: Development/Libraries/C and C++
Requires: glibc-devel
Requires: libgpg-error-devel
Requires: libgpgme11 = %{version}
%requires_ge libassuan-devel
Provides: gpgme-devel = %{version}
Obsoletes: gpgme-devel < %{version}
%description -n libgpgme-devel
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This subpackage contains the headers needed for building applications
making use of libgpgme.
%package -n libgpgmepp6
Summary: Programmatic C++ library interface to GnuPG
Group: System/Libraries
Requires: gpg2
%description -n libgpgmepp6
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the C++ bindings.
%package -n libgpgmepp-devel
Summary: Development files for libgpgmepp, a C++ library for accessing GnuPG
Group: Development/Libraries/C and C++
Requires: glibc-devel
Requires: libgpg-error-devel
Requires: libgpgme-devel = %{version}
Requires: libgpgmepp6 = %{version}
# This avoids requiring CMake at build time for the default flavor
Provides: cmake(Gpgmepp) = %{version}
%requires_ge libassuan-devel
%description -n libgpgmepp-devel
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This subpackage contains the headers needed for building applications
making use of libgpgmepp.
%if 0%{?python_subpackage_only}
%package -n python-gpg
Summary: Python %{python_version} bindings for GPGME, a library for accessing GnuPG
Group: Development/Languages/Python
%description -n python-gpg
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the bindings to use the library from Python %{python_version} applications.
%else
%package -n python3-gpg
Summary: Python 3 bindings for GPGME, a library for accessing GnuPG
Group: Development/Languages/Python
%description -n python3-gpg
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the bindings to use the library from Python 3 applications.
%endif
%package -n libqgpgme15
Summary: Programmatic Qt 5 library interface to GnuPG
Group: System/Libraries
Requires: gpg2
%description -n libqgpgme15
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the Qt 5 bindings.
%package -n libqgpgme-devel
Summary: Development files for libqgpgme, a Qt 5 library for accessing GnuPG
Group: Development/Libraries/C and C++
Requires: libgpgme-devel = %{version}
Requires: libgpgmepp-devel = %{version}
Requires: libqgpgme15 = %{version}
%description -n libqgpgme-devel
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the bindings to use the library in Qt 5 C++ applications.
%package -n libqgpgmeqt6-15
Summary: Programmatic Qt 6 library interface to GnuPG
Group: System/Libraries
Requires: gpg2
%description -n libqgpgmeqt6-15
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the Qt 6 bindings.
%package -n libqgpgmeqt6-devel
Summary: Development files for libqgpgmeqt6, a Qt library for accessing GnuPG
Group: Development/Libraries/C and C++
Requires: libgpgme-devel = %{version}
Requires: libgpgmepp-devel = %{version}
Requires: libqgpgmeqt6-15 = %{version}
# The include folders have the same name in both libqgpgme-devel and libqgpgmeqt6-devel
Conflicts: libqgpgme-devel
%description -n libqgpgmeqt6-devel
GnuPG Made Easy (GPGME) is a library designed to make access to GnuPG
easier for applications. It provides a high-level crypto API for
encryption, decryption, signing, signature verification, and key
management.
This package contains the bindings to use the library in Qt 6 C++ applications.
%prep
%autosetup -N -n gpgme-%{version}
%if %{with replace_distutils}
%patch -p1 -P2 -P3
%endif
%if 0%{suse_version} > 1500
# Note: rpm in 15.x does not know about the autopatch -m flag.
# Need to apply every additional patch explicitly, if any.
%autopatch -p1 -m4
%endif
%build
./autogen.sh
build_timestamp=$(date -u +%{Y}-%{m}-%{dT}%{H}:%{M}+0000 -r %{SOURCE99})
languages="cl cpp"
%if %{with python3}
languages="${languages} python"
%endif
%if %{with qt}
languages="cpp qt"
%endif
%if %{with qt6}
languages="cpp qt6"
%if 0%{?suse_version} < 1550
# Qt6 needs full c++-17 support
export CXX=g++-12 CC=gcc-12 CPP=cpp-12
%endif
%endif
%define _configure ../configure
mkdir build
pushd build
%configure \
--disable-silent-rules \
--disable-static \
--disable-fd-passing \
--enable-languages="${languages}" \
--enable-build-timestamp="${build_timestamp}"
%make_build
popd
%install
pushd build
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
chmod -x %{buildroot}%{_libdir}/cmake/Gpgmepp/*.cmake
%if %{with qt} || %{with qt6}
rm -r %{buildroot}%{_bindir}
rm -r %{buildroot}%{_datadir}/aclocal/gpgme*
rm -r %{buildroot}%{_includedir}/gpgme*
rm -r %{buildroot}%{_infodir}/gpgme*
rm -r %{buildroot}%{_libdir}/cmake/Gpgmepp
rm -r %{buildroot}%{_libdir}/libgpgme*
rm -r %{buildroot}%{_libdir}/pkgconfig/gpgme*
rm -r %{buildroot}%{_mandir}/man1/gpgme-json.*
%endif
popd
%check
GPGME_DEBUG=2:mygpgme.log %make_build check skip=%{?qt_skip:%{qt_skip}} || cat $(find -name mygpgme.log -type f)
%if %{with qt}
%ldconfig_scriptlets -n libqgpgme15
%endif
%if %{with qt6}
%ldconfig_scriptlets -n libqgpgmeqt6-15
%endif
%if %{without qt} && %{without qt6}
%ldconfig_scriptlets -n libgpgme11
%ldconfig_scriptlets -n libgpgmepp6
%endif
%if %{without qt} && %{without qt6}
%files
%license COPYING COPYING.LESSER LICENSES
%doc AUTHORS ChangeLog ChangeLog-2011 README NEWS THANKS TODO VERSION
%{_bindir}/gpgme-tool
%{_bindir}/gpgme-json
%{_datadir}/common-lisp
%{_datadir}/common-lisp/source
%{_infodir}/gpgme*
%{_mandir}/man1/gpgme-json.*
%files -n libgpgme11
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libgpgme.so.*
%files -n libgpgme-devel
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libgpgme.so
%{_bindir}/gpgme-config
%{_datadir}/aclocal/gpgme.m4
%{_includedir}/gpgme.h
%{_libdir}/pkgconfig/gpgme.pc
%{_libdir}/pkgconfig/gpgme-glib.pc
%files -n libgpgmepp6
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libgpgmepp.so.*
%files -n libgpgmepp-devel
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libgpgmepp.so
%{_includedir}/gpgme++
%dir %{_libdir}/cmake
%dir %{_libdir}/cmake/Gpgmepp
%{_libdir}/cmake/Gpgmepp/GpgmeppConfig*.cmake
%{_libdir}/pkgconfig/gpgmepp.pc
%endif
%if %{with python3}
%files %{python_files gpg}
%license COPYING COPYING.LESSER LICENSES
%{python_sitearch}/gpg
%{python_sitearch}/gpg-%{version}*.egg-info
%endif
%if %{with qt}
%files -n libqgpgme15
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libqgpgme.so.*
%files -n libqgpgme-devel
%license COPYING COPYING.LESSER LICENSES
%{_includedir}/qgpgme-qt5/
%dir %{_libdir}/cmake
%dir %{_libdir}/cmake/QGpgme
%{_libdir}/cmake/QGpgme/*.cmake
%{_libdir}/libqgpgme.so
%endif
%if %{with qt6}
%files -n libqgpgmeqt6-15
%license COPYING COPYING.LESSER LICENSES
%{_libdir}/libqgpgmeqt6.so.*
%files -n libqgpgmeqt6-devel
%license COPYING COPYING.LESSER LICENSES
%{_includedir}/qgpgme-qt6/
%dir %{_libdir}/cmake
%dir %{_libdir}/cmake/QGpgmeQt6
%{_libdir}/cmake/QGpgmeQt6/*.cmake
%{_libdir}/libqgpgmeqt6.so
%endif
%changelog