File signon.spec of Package signon

#
# spec file for package signon
#
# Copyright (c) 2023 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 flavor @BUILD_FLAVOR@%{nil}
%if "%{flavor}" == "qt6"
%define qt6 1
%define pkg_suffix -qt6
%define _suffix qt6
%define _major_ver 6
%else
%define qt5 1
%define _suffix qt5
%define _major_ver 5
%endif
%define _soname 1
%define rname signond
%define rversion VERSION_8.61
Name:           signon%{?pkg_suffix}
Version:        8.61
Release:        0
Summary:        Single Sign On Framework
License:        LGPL-2.0-only
URL:            https://gitlab.com/accounts-sso/signond
Source:         https://gitlab.com/accounts-sso/%{rname}/-/archive/VERSION_%{version}/%{rname}-%{rversion}.tar.bz2
# PATCH-FIX-UPSTREAM -- https://gitlab.com/accounts-sso/signond/-/merge_requests/36/diffs
Patch0:         0001-Add-Qt6-support.patch
BuildRequires:  doxygen
BuildRequires:  graphviz
BuildRequires:  pkgconfig
BuildRequires:  pkgconfig(Qt%{_major_ver}Core)
BuildRequires:  pkgconfig(Qt%{_major_ver}DBus)
BuildRequires:  pkgconfig(Qt%{_major_ver}Gui)
BuildRequires:  pkgconfig(Qt%{_major_ver}Network)
BuildRequires:  pkgconfig(Qt%{_major_ver}Sql)
BuildRequires:  pkgconfig(Qt%{_major_ver}Test)
BuildRequires:  pkgconfig(Qt%{_major_ver}Xml)
BuildRequires:  pkgconfig(libproxy-1.0)
BuildRequires:  pkgconfig(libssl)

%description
The SignOn daemon is a D-Bus service which performs user authentication on
behalf of its clients.

# NOTE Read https://gitlab.com/accounts-sso/signon-plugin-oauth2/-/merge_requests/28#note_1689621252
# Only lisignon-qtX must be flavored
%package -n libsignon-qt%{_major_ver}-%{_soname}
Summary:        Single Sign On Framework for Qt

%description -n libsignon-qt%{_major_ver}-%{_soname}
Framework that provides credential storage and authentication service.

%package -n libsignon-qt%{_major_ver}-devel
Summary:        Development files for libsignon-qt%{_soname}
Requires:       libsignon-qt%{_major_ver}-%{_soname} = %{version}
Requires:       pkgconfig(Qt%{_major_ver}Core)

%description -n libsignon-qt%{_major_ver}-devel
This package contains the development files for the signon-qt library.

%if 0%{?qt6}
%package -n signond
Summary:        Single Sign On Framework
Requires:       signond-libs = %{version}
Requires:       qt6-sql-sqlite

%description -n signond
Framework that provides credential storage and authentication service.

# No need to build docs twice
%package -n signond-docs
Summary:        Single Sign On Framework - Documentation
BuildArch:      noarch

%description -n signond-docs
This package contains the documentation for signond.

%package -n libsignon-qt-docs
Summary:        Documentation for the signon-qt library
BuildArch:      noarch

%description -n libsignon-qt-docs
This package contains the documentation for the signon-qt library.

%package -n signon-plugins-docs
Summary:        Documentation for the Single Sign On Framework's plugins
BuildArch:      noarch

%description -n signon-plugins-docs
This package contains the documentation for the Single Sign On Framework's
plugins.

%package -n signond-libs
Summary:        Single Sign On Framework

%description -n signond-libs
Framework that provides credential storage and authentication service.

%package -n signond-libs-devel
Summary:        Development files for signond-libs
Requires:       signond = %{version}
Requires:       signond-libs = %{version}
Requires:       pkgconfig(Qt6Core)

%description -n signond-libs-devel
This package contains the development files for signond-libs.

%package -n signon-plugins
Summary:        Plugins for the Single Sign On Framework
Requires:       signond = %{version}

%description -n signon-plugins
This package contains the following plugins for the Single Sign On Framework:
  * Password plugin
  * Test plugin

%package -n signon-plugins-devel
Summary:        Development files for the Single Sign On Framework's plugins
Requires:       libsignon-qt6-devel = %{version}
Requires:       signon-plugins = %{version}

%description -n signon-plugins-devel
This package contains the development files necessary for creating plugins for
the Single Sign On Framework.
%endif

%prep
%autosetup -p1 -n %{rname}-%{rversion}

sed -i 's|/usr/lib|%{_libdir}|g' \
  lib/plugins/signon-plugins.pc.in \
  lib/plugins/signon-plugins-common/signon-plugins-common.pc.in \
  src/signond/signondaemon.h \
  src/remotepluginprocess/remotepluginprocess.h \
  src/plugins/example/exampleplugin.pro

# Fix documentation directory
sed -i -e '/^documentation.path/ s|share/doc|share/doc/packages|g' \
  doc/doc.pri \
  lib/plugins/doc/doc.pri \
  lib/SignOn/doc/doc.pri

sed -i -e '/^example.path/ s|share/doc|share/doc/packages|g' \
  src/plugins/example/example.pro

%build
%global _lto_cflags %{_lto_cflags} -ffat-lto-objects
%if 0%{?qt6}
%qmake6 \
%else
%qmake5 \
%endif
  PREFIX=%{_prefix} \
  LIBDIR=%{_libdir}

%make_jobs

%install
%if 0%{?qt6}
%qmake6_install
%else
%qmake5_install

# Only needed once
rm %{buildroot}%{_bindir}/*
rm %{buildroot}%{_libdir}/libsignon-{extension,plugins}*
rm %{buildroot}%{_libdir}/pkgconfig/{SignOnExtension,signond,signon-plugins}*
rm %{buildroot}%{_sysconfdir}/signond.conf
rm -r %{buildroot}%{_datadir}/dbus-1
rm -r %{buildroot}%{_docdir}
rm -r %{buildroot}%{_includedir}/signon-{extension,plugins}
rm -r %{buildroot}%{_includedir}/signond
rm -r %{buildroot}%{_libdir}/signon

%endif

# Remove tests
find %{buildroot} -type f -name '*tests*' -print -delete

%ldconfig_scriptlets -n libsignon-qt%{_major_ver}-%{_soname}
%if 0%{?qt6}
%ldconfig_scriptlets -n signond-libs
%ldconfig_scriptlets -n signon-plugins
%endif

%files -n libsignon-qt%{_major_ver}-%{_soname}
%license COPYING
%{_libdir}/libsignon-qt%{_major_ver}.so.*

%files -n libsignon-qt%{_major_ver}-devel
%{_includedir}/signon-qt%{_major_ver}/
%{_libdir}/libsignon-qt%{_major_ver}.so
%{_libdir}/libsignon-qt%{_major_ver}.a
%{_libdir}/pkgconfig/libsignon-qt%{_major_ver}.pc
%{_libdir}/cmake/SignOnQt%{_major_ver}/

%if 0%{?qt6}
%files -n signond
%doc README.md
%config(noreplace) %{_sysconfdir}/signond.conf
%{_bindir}/signond
%{_bindir}/signonpluginprocess
%{_datadir}/dbus-1/services/com.google.code.AccountsSSO.SingleSignOn.service
%{_datadir}/dbus-1/services/com.nokia.SingleSignOn.Backup.service

%files -n signond-libs
%{_libdir}/libsignon-extension.so.*
%{_libdir}/libsignon-plugins-common.so.*

%files -n signond-libs-devel
%{_includedir}/signond/
%{_includedir}/signon-extension/
%{_libdir}/libsignon-extension.so
%{_libdir}/libsignon-plugins-common.so
%{_libdir}/pkgconfig/signond.pc
%{_libdir}/pkgconfig/SignOnExtension.pc

%files -n signon-plugins
%{_libdir}/libsignon-plugins.so.*
%dir %{_libdir}/signon/
%{_libdir}/signon/libexampleplugin.so
%{_libdir}/signon/libpasswordplugin.so
%{_libdir}/signon/libssotest2plugin.so
%{_libdir}/signon/libssotestplugin.so

%files -n signon-plugins-devel
%doc %{_docdir}/signon-plugins-dev/
%{_includedir}/signon-plugins/
%{_libdir}/libsignon-plugins.so
%{_libdir}/pkgconfig/signon-plugins-common.pc
%{_libdir}/pkgconfig/signon-plugins.pc

%files -n signond-docs
%doc %{_docdir}/signon/

%files -n libsignon-qt-docs
%doc %{_docdir}/libsignon-qt/

%files -n signon-plugins-docs
%doc %{_docdir}/signon-plugins/
%endif

%changelog
openSUSE Build Service is sponsored by